Loading

Temas

Cómo exportar todos los datos de las entradas de tiempo de Asana como CSV a través de la API

¿Quién puede usar esta función?
StarterAdvancedEnterpriseEnterprise+PremiumBusinessLegacy Enterprise

Visita nuestra página de precios para obtener más información.

Para las organizaciones que utilizan los registros de horas y presupuestos de Asana, los informes periódicos son esenciales para una contabilidad y una nómina precisas. Si bien Asana ofrece vistas sólidas dentro de la aplicación, es posible que ocasionalmente necesites una exportación completa en formato CSV de todas las entradas de tiempo de todo tu dominio para una auditoría externa o un procesamiento personalizado al final de un mes o trimestre.

En este artículo se explica cómo usar la API de Asana para agregar registros de tiempo de todo tu espacio de trabajo y darles formato para convertirlos en un archivo CSV claro y listo para la contabilidad que cumpla con tus requisitos internos.

Nota iconNota

Si bien esta guía está diseñada para los usuarios del complemento de registros de horas y presupuestos, este método de exportación basado en la API también está disponible para los usuarios que no usan el complemento y registran el tiempo a través de los campos de tareas estándar de Asana.

¿Por qué exportar a través de la API?

Si bien la interfaz de usuario de Asana ofrece paneles potentes, la exportación a través de la API te permite:

  • Automatizar los informes: programa exportaciones mensuales o trimestrales para tu equipo de finanzas sin clics manuales.
  • Granularidad de la auditoría: accede a metadatos específicos, como el estado de la tarea, la prioridad y los GID de las entradas, que son fundamentales para el mantenimiento de registros.
  • Integración de sistemas: transfiere fácilmente tus datos de tiempo de Asana a un sistema de ERP o a un software de nómina.

El formato de exportación de destino

Para garantizar la compatibilidad con las prácticas contables estándar, tu script de exportación debe generar un archivo CSV que contenga los siguientes campos, tal como se ven en las exportaciones de la vista de revisor:

Columna

Descripción

Nombre de la tarea

El título de la tarea en la que se registró el tiempo.

Tiempo (horas)

Duración total convertida de minutos a horas decimales.

Fecha

El día específico en que se realizó el trabajo.

Remitente

El nombre del miembro del equipo que registró el tiempo.

GID de la tarea

El identificador único de la tarea de Asana.

GID del proyecto

El identificador único del proyecto madre.

Estado de la tarea

Si la tarea está actualmente “Activa” o “Finalizada”.

GID de la entrada

El identificador único del registro de tiempo específico.

Implementación: Exportación a través de Python

Para exportar “todo” el tiempo, tu script debe recorrer tus proyectos para encontrar tareas y, luego, obtener las entradas de tiempo para esas tareas mediante el punto de conexión Obtener entradas de seguimiento del tiempo para una tarea.

Requisitos previos

El script de exportación

Python
import asana
import pandas as pd

# Inicializar cliente client
= asana.Client.access_token('YOUR_PERSONAL_ACCESS_TOKEN')
workspace_gid = 'TU_ESPACIO_DE_TRABAJO_GID'

def export_domain_time():
    all_time_data = []

    # 1. Iterar a través de todos los proyectos en el espacio de trabajo
    projects = client.projects.get_projects({'workspace': workspace_gid})
   
    para el proyecto en los proyectos:
        # 2. Obtén todas las tareas del proyecto
        tasks = client.tasks.get_tasks_for_project(project['gid'], opt_fields=[
            'name', 'gid', 'finalizado', 'completed_at', 'prioridad'
        ])

        for task in tasks:
            # 3. Obtén las entradas de tiempo para cada tarea
            time_entries = client.time_tracking_entries.get_time_tracking_entries_for_task(
                task['gid'],
                opt_fields=['created_by.name', 'duration_minutes', 'entered_on', 'gid']
            )

            for entry in time_entries:
                # Calcula las horas en formato decimal
                hours = round(entry['duration_minutes'] / 60, 2)
               
                # Crear la fila para que coincida con la plantilla CSV
                all_time_data.append({
                    "Nombre de la tarea": task['name'],
                    "Tiempo (horas)": hours,
                    "Fecha": entry['entered_on'],
                    "Remitente": entry['created_by']['name'],
                    "GID de la tarea": task['gid'],
                    "GID del proyecto": project['gid'],
                    "Estado de la tarea": "Finalizado" if task['completed'] else "Abierto",
                    "Fecha de finalización de la tarea": task.get('completed_at', ''),
                    "Prioridad de la tarea": task.get('priority', ''),
                    "GID de entrada": entry['gid']
                })

    # 4. Guardar en un CSV
    df = pd.DataFrame(all_time_data)
    df.to_csv('asana_time_export_accounting.csv', index=False)
    print("Exportación finalizada: asana_time_export_accounting.csv")

export_domain_time()

Consideraciones críticas para dominios grandes

Cuando ejecutes esta exportación para toda una organización, ten en cuenta las siguientes mejores prácticas:

  • Límites de tasa de la API: Asana tiene límites en la cantidad de solicitudes que puedes realizar por minuto. Para dominios enormes, considera agregar time.sleep() o usar la lógica de reintento integrada en la biblioteca de Asana.
  • Filtrado por fecha: para la contabilidad mensual, usa el campo entered_on dentro de tu script para filtrar solo el período relevante (por ejemplo, el mes anterior).
  • Permisos: Asegúrate de que el token de acceso personal pertenezca a una cuenta de servicio o a un administrador que tenga acceso a todos los proyectos relevantes, para que no se omitan entradas.

Exportar entradas de tiempo desde la página Registros de horas

Puedes exportar entradas de tiempo desde la página de registros de horas para el período que selecciones. Desde Planillas de horas, haz clic en la flecha desplegable que se encuentra al lado del título de la página y, a continuación, selecciona la opción de exportación que coincida con las entradas de tiempo que necesitas.
 
  • Exportar mis entradas de tiempo en formato CSV exporta tus propias entradas de tiempo para el período seleccionado.
  • Exportar CSV de las entradas de tiempo de los remitentes exporta las entradas de tiempo de las personas cuyas entradas de tiempo revisas.
  • Exportar CSV de las entradas de tiempo de todos los usuarios exporta todas las entradas de tiempo de toda la organización para el período seleccionado. Esta opción está disponible para los superadministradores.
Usa la exportación de los registros de horas cuando necesites un archivo CSV sin configurar un flujo de trabajo de API. Para la creación automática de informes, el procesamiento personalizado o el acceso a los campos de respuesta de la API que se describen más adelante en este artículo, utiliza el método de la API.

Ask the Community

Note iconNota

Este artículo se tradujo con IA.

Envía comentarios sobre la traducción.
Cargando
Exportar los datos de tiempo de Asana a un CSV a través de la API | Centro de ayuda de Asana