Loading

Temas

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

No se encontraron artículos para este tema.

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 usan 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 proporciona vistas sólidas en la aplicación, es posible que ocasionalmente necesites una exportación CSV completa de todas las entradas de tiempo en todo tu dominio para la auditoría externa o el procesamiento personalizado al final de un mes o trimestre.

En este artículo se explica cómo usar la API de Asana para agregar entradas de tiempo de todo tu espacio de trabajo y formatearlas en un CSV limpio y listo para la contabilidad que coincida con tus requisitos internos.

Nota iconNota

Si bien esta guía está diseñada para usuarios del complemento de Planes de horas y presupuestos, este método de exportación basado en API también está disponible para usuarios que no usan complementos y registran el tiempo a través de 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 lo siguiente:

  • 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 las tareas, la prioridad y los GID de entrada, que son cruciales para el mantenimiento de registros.
  • Integración de sistemas: transfiere fácilmente tus datos de tiempo de Asana a un software de nómina o ERP.

El formato de exportación de destino

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

Columna

Descripción

Nombre de la tarea

El título de las tareas donde 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 tareas

El identificador único de las tareas de Asana.

GID del proyecto

El identificador único del proyecto principal.

Estado de las tareas

Si la tarea está actualmente “abierta” o “finalizada”.

GID de entrada

El identificador único para el 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 buscar entradas de tiempo para esas tareas utilizando 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_GID_DE_ESPACIO_DE_TRABAJO'

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({'espacio de trabajo': workspace_gid})
   
    para proyectos en proyectos:
        # 2. Obtener todas las tareas del proyecto
        tareas = client.tasks.get_tasks_for_project(project['gid'], opt_fields=[
            'name', 'gid', 'finalizado', 'finalizado_en', 'prioridad'
        ])

        for tarea in tareas:
            # 3. Obtener 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)
               
                # Construir la fila para que coincida con la plantilla CSV
                all_time_data.append({
                    "Nombre de la tarea": task['name'],
                    "Tiempo (horas)": horas,
                    "Fecha": entrada['enter_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 las tareas": task.get('priority', ''),
                    "GID de entrada": entry['gid']
                })

    # 4. Guardar en 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

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

  • Límites de velocidad de la API: Asana tiene límites en la cantidad de solicitudes que puedes realizar por minuto. Para dominios masivos, considera agregar time.sleep() o usar la lógica de reintento integrada de la biblioteca de Asana.
  • Filtrado de fechas: para la contabilidad mensual, usa el campo entered_on dentro de tu script para filtrar solo para 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.

Ask the Community

Note iconNota

Este artículo se tradujo con IA.

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