Loading

トピック

Asana からすべての時間入力データを CSV として API 経由でエクスポートする方法

この機能を利用できるユーザー
StarterAdvancedEnterpriseEnterprise+PremiumBusiness旧 Enterprise

詳細は料金ページをご確認ください。

Asana のタイムシートと予算アドオンを使用する組織では、正確な会計処理と給与計算のために定期的なレポート作成が不可欠です。Asana には充実したアプリ内ビューがありますが、外部監査やカスタム処理のために、月末や四半期末にドメイン全体のすべての時間入力を包括的に CSV エクスポートする必要がある場合があります。

この記事では、Asana API を使用してワークスペース全体の時間エントリを集計し、社内の要件に合った、会計処理に対応した整理された CSV にフォーマットする方法について説明します。

ノート iconノート

このガイドは、タイムシートと予算アドオンのユーザー向けに作成されていますが、この API ベースのエクスポート方法は、標準の Asana タスクフィールドを介して時間を記録するアドオンを使用していないユーザーも利用できます。

API を介してエクスポートする理由

Asana の UI には強力なダッシュボードがありますが、API を介してエクスポートすると、次のことが可能になります。

  • 報告作業を自動化:手動でクリックすることなく、財務チーム向けに月次または四半期ごとのエクスポートをスケジュールできます。
  • 詳細な監査:タスクのステータス、優先度、エントリ GID など、記録管理に不可欠な特定のメタデータにアクセスできます。
  • システム連携: Asana の時間データを ERP や給与計算ソフトウェアに簡単に転送できます。

エクスポートのターゲット形式

標準的な会計慣行との互換性を確保するため、エクスポートスクリプトは、レビュアービューのエクスポートに表示される以下のフィールドを含む CSV を生成する必要があります。

説明

タスク名

時間が記録されたタスクのタイトル。

時間 (時間単位)

合計所要時間 (分単位から 10 進数の時間単位に変換)。

日付

作業が実行された具体的な日付。

送信者

時間を記録したチームメンバーの名前。

タスク GID

Asana タスクの一意の識別子。

プロジェクト GID

親プロジェクトの一意の識別子。

タスクステータス

タスクが現在「オープン」か「完了」か。

エントリ GID

特定の時間ログの一意の識別子。

導入: Python を使ったエクスポート

「すべて」の時間をエクスポートするには、スクリプトでプロジェクトを反復処理してタスクを見つけ、次に「タスクのタイムトラッキングの記録を取得」エンドポイントを使用してそれらのタスクのタイムトラッキングの記録を取得する必要があります。

前提条件

エクスポートスクリプト

Python 
import asana
import 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})

    for project in projects:
        # 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'],
                    "時間 (時間単位)": hours,
                    "日付": entry['entered_on'],
                    "送信者": entry['created_by']['name'],
                    "タスク GID": task['gid'],
                    "プロジェクト GID": project['gid'],
                    "タスクのステータス": "完了" 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 には、1 分間に実行できるリクエスト数の制限があります。大規模なドメインの場合は、time.sleep() の追加、または Asana ライブラリに組み込まれている再試行ロジックの使用を検討してください。
  • 日付フィルタリング:月次会計の場合は、スクリプト内の entered_on フィールドを使用して、関連する期間 (前月など) のみをフィルタリングします。
  • アクセス許可:関連するすべてのプロジェクトにアクセスできるサービスアカウントまたは管理者の Personal アクセストークンを使用して、エントリがスキップされないようにしてください。

タイムシートページから時間入力をエクスポート

タイムシート」ページから、選択した期間の時間入力をエクスポートできます。タイムシートで、ページタイトルの横にあるドロップダウンの矢印をクリックし、必要な時間入力に対応するエクスポート方法を選択します。
  • 時間入力を CSV 形式でエクスポートすると、選択した期間の自分の時間入力がエクスポートされます。
  • 「送信者の時間入力を CSVとしてエクスポート」は、あなたが時間入力を確認するユーザーの時間入力をエクスポートします。
  • 「全員の時間入力を CSV としてエクスポート」は、選択した期間の組織全体のすべての時間入力をエクスポートします。このオプションは特権管理者が使用できます。
API ワークフローをセットアップせずに CSV ファイルが必要な場合は、タイムシートのエクスポートを使用してください。自動レポート、カスタム処理、またはこの記事で後述する API 応答フィールドへのアクセスには、API メソッドを使用してください。

Ask the Community

Note iconノート

この記事は AI によって翻訳されています。

翻訳に関するフィードバックを送る。
読み込み中
Asana の時間データを API 経由で CSV にエクスポートする | Asana ヘルプセンター