Loading

主題

如何透過應用程式開發介面 (API) 將 Asana 中的所有時間紀錄資料匯出為 CSV 檔

誰可以使用此功能?
StarterAdvancedEnterprise 版Enterprise+Premium 版Business 版舊版 Enterprise

如需詳細資訊,請前往定價頁面

對於使用 Asana 時程表和預算功能的組織,定期報告對於準確的會計和薪資管理至關重要。雖然 Asana 提供強大的應用程式內檢視,但您偶爾可能需要在月底或季度末匯出整個網域中所有時間紀錄的完整 CSV,以便進行外部稽核或自訂處理。

本文說明如何使用 Asana API 彙總整個工作空間的時間記錄,並將其格式化為符合您內部要求的、整潔且可供會計使用的 CSV 檔案。

注意 icon注意

雖然本指南是為時程表和預算附加元件的使用者量身打造,但此基於 API 的匯出方法也適用於透過標準 Asana 任務欄位記錄時間的非附加元件使用者。

為什麼要透過應用程式開發介面 (API) 匯出?

雖然 Asana 使用者介面提供強大的儀表板,但透過應用程式開發介面 (API) 進行匯出可讓您做到:

  • 自動化報告:為您的財務團隊排定每月或每季度匯出,無需手動點擊。
  • 稽核粒度:存取對記錄保存至關重要的特定中繼資料,例如任務狀態、優先順序和條目 GID。
  • 系統整合:輕鬆將您的 Asana 時間資料傳送至 ERP 或薪資軟體。

目標匯出格式

為確保與標準會計慣例相容,您的匯出指令碼應產生一個 CSV 檔案,其中包含您的審核者檢視匯出中顯示的以下欄位:

描述

任務名稱

已記錄時間的任務標題。

時間 (小時)

總持續時間從分鐘轉換為小數小時。

日期

執行工作的具體日期。

提交者

時間記錄者的團隊成員姓名。

任務 GID

Asana 任務的唯一識別碼。

專案 GID

上層專案的唯一識別碼。

任務狀態

任務目前是「未完成」還是「已完成」。

紀錄 GID

特定時間記錄的唯一識別碼。

實作:透過 Python 匯出

若要匯出「所有」時間,您的指令碼必須迭代您的專案以尋找任務,然後使用Get time tracking entries for a task端點擷取這些任務的時間項目。

先決條件

匯出指令碼

Python 
匯入 Asana
匯入 pandas as pd

# 初始化用戶
端 client = asana.Client.access_token('YOUR_PERSONAL_ACCESS_TOKEN')
workspace_gid = 'YOUR_WORKSPACE_GID'

def export_domain_time():
    all_time_data = []   
   
        # 1. 迭代工作空間中的所有專案
    projects = client.projects.get_projects({'workspace': workspace_gid})

    針對專案中的專案:
        # 2. 取得專案中的所有任務
        tasks = client.tasks.get_tasks_for_project(project['gid'], opt_fields=[
            'name', 'gid', 'completed', 'completed_at', 'priority'
        ])       
       
                for task in tasks:
            # 3. 取得每個任務的時間記錄
            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:
                # 以小數格式計算時數
                hours = round(entry['duration_minutes'] / 60, 2)

                # 建立與 CSV 範本相符的列
                all_time_data.append({
                    "任務名稱": task['name'],
                    "Time (hours)": hours,
                    "Date": entry['entered_on'],
                    "提交者": entry['created_by']['name'],
                    "任務 GID": task['gid'],
                    "專案 GID": project['gid'],
                    "Task Status": "已完成" if task['completed'] else "未完成",
                    "任務完成日期": task.get('completed_at', ''),
                    "任務優先順序": task.get('priority', ''),
                    "記錄 GID": entry['gid']
                })   
   
        # 4. 將資料儲存為 CSV 檔
    df = pd.DataFrame(all_time_data)
    df.to_csv('asana_time_export_accounting.csv', index=False)
    print("匯出已完成:asana_time_export_accounting.csv")

export_domain_time()

大型網域的關鍵考量

為整個組織執行此匯出時,請謹記以下最佳作法:

  • 應用程式開發介面 (API) 速率限制: Asana 限制了您每分鐘可以提出的請求數量。針對大型網域,請考慮新增 time.sleep() 或使用 Asana 庫中內建的重試邏輯。
  • 日期篩選:對於每月會計,請使用指令碼中的 entered_on 欄位,僅篩選相關期間 (例如:上個月)。
  • 權限:請確保個人存取權杖屬於服務帳戶系統管理員,且其擁有所有相關專案的存取權限,以免跳過任何條目。

從「時程表」頁面匯出時間紀錄

您可以從時程表頁面匯出所選時間範圍的時間紀錄。在「時程表」中,點選頁面標題旁的下拉式箭頭,然後選擇與您需要的時間紀錄相符的匯出選項。
  • 匯出我的時間紀錄 CSV 檔會匯出您自己在所選時間範圍內的時間紀錄。
  • 匯出提交者的時間紀錄·CSV會匯出您審查的人員的時間紀錄。
  • 匯出每個人的時間紀錄 CSV會匯出整個組織在所選時間範圍內的所有時間紀錄。此選項可供超級管理員使用。
當您需要 CSV 檔案,但不想設定應用程式開發介面 (API) 工作流程時,請使用時程表匯出。若要進行自動報告、自訂處理或存取本文下文所述的應用程式開發介面 (API) 回應欄位,請使用應用程式開發介面 (API) 方法。

Ask the Community

Note icon注意

This article has been AI-translated.

Send translation feedback.
正在載入
透過應用程式開發介面 (API) 將 Asana 時間資料匯出至 CSV | Asana 說明中心