En este artículo se explica cómo trasladar los datos históricos de seguimiento del tiempo de Everhour al complemento nativo de Asana para hojas de horas y presupuestos. Al seguir estos pasos, puedes consolidar los datos de tiempo de tu Equipo, lo que garantiza la precisión de los informes de los proyectos y el seguimiento del presupuesto en una sola plataforma.
La migración comienza con la recuperación de tus datos existentes. Para asegurarte de tener todos los registros históricos de tu Equipo, sigue estos pasos:
Para asignar correctamente el tiempo a los registros correctos en Asana, tus datos deben asignarse a los GID (identificadores globales) de Asana existentes. En una exportación de Everhour, las tareas sincronizadas con Asana a menudo incluyen un prefijo.
Campo de datos | Etiqueta de exportación de Everhour (ejemplo) | Objetivo de Asana requerido |
ID de la tarea | task.id (p. ej., as:1212815283326608) | El GID numérico (p. ej., 1212815283326608) |
ID del proyecto | task.projects | GID del proyecto de Asana |
Tiempo dedicado | tiempo (segundos) | Asana duración_minutos |
Nota
Al procesar la exportación, asegúrate de eliminar cualquier prefijo as: de los ID para que coincida con el formato GID interno de Asana.
Paso 3: Implementa el script de migración (Python)
El siguiente script utiliza la API de Asana para crear entradas de seguimiento del tiempo para recrear registros. La lógica utiliza direcciones de email para hacer coincidir a los usuarios entre los sistemas, lo que garantiza que el tiempo se atribuya al miembro correcto del equipo.
importar asanaimport json# Inicializar el cliente de Asanaclient = asana.Client.access_token('YOUR_PERSONAL_ACCESS_TOKEN')workspace_gid = "TU_GID_DE_ESPACIO_DE_TRABAJO"def migrate_everhour_to_asana(json_file_path, user_mapping_file_path):with open(json_file_path) as f:entries = json.load(f)# 1. Obtener usuarios de Asana para asignar emails a GIDasana_users = {u['email']: u['gid'] for u in client.users.get_users_for_workspace(workspace_gid, opt_fields=['email', 'gid'])}# 2. Cargar una asignación de los ID de usuario de Everhour a los emails# (por ejemplo, desde la exportación de miembros del equipo de Everhour )with open(user_mapping_file_path) as f:everhour_user_emails = {user['id']: user['email'] for user in json.load(f)}for entry in entries:everhour_user_id = entry['user']user_email = everhour_user_emails.get(everhour_user_id)# Asignar usuario por emailasana_user_gid = asana_users.get(user_email)if not asana_user_gid:continue# Limpiar ID de tareas (eliminar prefijo 'as:')task_gid = entry['task']['id'].replace("como:", "")# Convertir segundos a minutos para la API de Asanaduration_mins = entry['time'] // 60# 3. Crear entrada en Asanatry:client.time_tracking_entries.create_time_tracking_entry(task_gid, {'created_by': asana_user_gid,'duration_minutes': duration_mins,'entered_on': entry['date'],'description': entry.get('comment', '')})print(f"Se migraron correctamente {duration_mins}m para la tarea {task_gid}")except Exception as e:print(f"Error en la entrada {entry['id']}: {e}")migrate_everhour_to_asana('time_2026_01.json', 'users.json')
¿Por qué migrar al seguimiento del tiempo nativo de Asana?
Migrar tus datos a Asana te permite aprovechar todo el potencial del complemento de planillas de horas y presupuestos:
Nota
Este artículo se tradujo con IA.
Envía comentarios sobre la traducción.