Artikel ini menjelaskan cara memindahkan data pelacakan waktu historis dari Everhour ke pengaya Timesheet dan Anggaran bawaan Asana. Dengan mengikuti langkah-langkah ini, Anda dapat menggabungkan data waktu tim, memastikan pelaporan proyek dan pelacakan anggaran yang akurat dalam satu platform.
Migrasi dimulai dengan mengambil data Anda yang sudah ada. Untuk memastikan Anda memiliki semua log historis untuk tim, ikuti langkah-langkah berikut:
Agar berhasil menghubungkan waktu ke catatan yang benar di Asana, data Anda harus dipetakan ke GID (Global Identifier) Asana yang ada. Dalam ekspor Everhour, tugas yang disinkronkan Asana sering kali menyertakan awalan.
Bidang Data | Label Ekspor Everhour (Contoh) | Target Asana yang Diperlukan |
ID Tugas | task.id (misalnya, as:1212815283326608) | GID numerik (misalnya, 1212815283326608) |
ID Proyek | task.projects | GID Proyek Asana |
Waktu yang Digunakan | waktu (Detik) | Asana duration_minutes |
Catatan
Saat memproses ekspor, pastikan Anda menghapus semua awalan as: dari ID agar sesuai dengan format GID internal Asana.
Langkah 3: Terapkan skrip migrasi (Python)
Skrip di bawah ini menggunakan API Buat Entri Pelacakan Waktu Asana untuk membuat ulang log. Logika menggunakan alamat email untuk mencocokkan pengguna antar-sistem, memastikan bahwa waktu dikaitkan dengan anggota tim yang benar.
impor asanaimpor json# Inisialisasi Klien Asanaclient = asana.Client.access_token('YOUR_PERSONAL_ACCESS_TOKEN')workspace_gid = "GID_RUANG_KERJA_ANDA"def migrate_everhour_to_asana(json_file_path, user_mapping_file_path):dengan open(json_file_path) sebagai f:entri = json.load(f)# 1. Ambil pengguna Asana untuk memetakan email ke GIDasana_users = {u['email']: u['gid'] for u in client.users.get_users_for_workspace(workspace_gid, opt_fields=['email', 'gid'])}# 2. Muat pemetaan ID Pengguna Everhour ke Email# (misalnya, dari ekspor Anggota Tim Everhour)dengan open(user_mapping_file_path) sebagai f:everhour_user_emails = {user['id']: user['email'] for user in json.load(f)}untuk entri dalam entri:everhour_user_id = entry['user']user_email = everhour_user_emails.get(everhour_user_id)# Cocokkan pengguna dengan emailasana_user_gid = asana_users.get(user_email)jika bukan asana_user_gid:continue# Hapus ID Tugas (hapus prefiks 'as:')task_gid = entry['task']['id'].replace("as:", "")# Konversi detik ke menit untuk API Asanaduration_mins = entry['time'] // 60# 3. Buat entri Di Asanacoba:client.time_tracking_entries.create_time_tracking_entry(task_gid, {'created_by': asana_user_gid,'duration_minutes': duration_mins,'entered_on': entri['date'],'description': entry.get('comment', '')})print(f"Berhasil memigrasikan {duration_mins}m untuk Tugas {task_gid}")kecuali Pengecualian sebagai e:print(f"Kesalahan untuk entri {entry['id']}: {e}")migrate_everhour_to_asana('time_2026_01.json', 'users.json')
Mengapa Bermigrasi ke Pelacakan Waktu Asana Native?
Memindahkan data Anda ke Asana memungkinkan Anda memanfaatkan kekuatan penuh dari addon Timesheet dan Anggaran:
Catatan
Artikel ini diterjemahkan oleh AI.
Kirim umpan balik terjemahan.