Asanaユーザー必見!GASを使用してデータをスプレッドシートに出力する方法

Asanaユーザー必見!GASを使用してデータをスプレッドシートに出力する方法

Ryosuke Tsuzuura

Ryosuke Tsuzuura

こんにちは。LIG Technologies Vietnam Company Limited(LIGのベトナム支社です)CEOのTSUZUです。

以前、AsanaのデータをGoogleスプレッドシートに出力してグラフを作成する、という記事を書きました。

こちらの記事では、Asanaの画面上でCSV出力し、スプレッドシートに手動でインポートするという方法を紹介しましたが、このやり方だとデータを更新する際に都度手動での作業が発生してしまいます。

こんな面倒な作業、できれば自動化させたいですよね? というわけで、今回はAsana APIとGAS(Google Apps Script)を使用してGoogleスプレッドシートにAsanaのデータを出力したいと思います。

前提条件

前回の記事と重複しますが、下記のようなボードでの運用を想定します。

このボードから、下記のデータを取得するスクリプトを作成しましょう。

  • タスク名
  • ストーリーポイント
  • 完了日

事前準備

出力先のスプレッドシートを作成

適当なスプレッドシートを作成してください。

今回は「KPI管理」というスプレッドシートに「Asana Data」というシートを作成しました。こちらにAsanaのデータを出力しようと思います。

Asanaのアクセストークンを取得

下記のサイトを参考にアクセストークンを取得してください。

【GAS】Asana APIを使ってタスクを取得する

実装

実装内容は下記となります。

// @ts-nocheck
/**
 * Asanaからタスクを取得する
 */
function getAsanaData() {
  // 出力先シートを指定
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test');

  // シートをクリア
  sheet.clear();

  // スプレッドシートのヘッダー名を指定
  sheet.getRange(1,1).setValue("Task Name");
  sheet.getRange(1,2).setValue("Completed At");
  sheet.getRange(1,3).setValue("Story Point");

  // リクエストオプションを作成
  var options = {
    // GETメソッド
    'method': 'get',
    // JSON形式
    'contentType': 'application/json',
    // ヘッダ
    'headers': { 
      // 認証情報
      'Authorization': 'Bearer ' + 【アクセストークン】
    }
  }  
  // Asana APIを実行しタスクを取得する
  var response = UrlFetchApp.fetch(`https://app.asana.com/api/1.0/projects/【プロジェクトID】/tasks?opt_fields=name,completed_at,custom_fields,memberships,assignee_section`, options);
  
  // 取得結果をJSONパース
  var result = JSON.parse(response);
    // スプレッドシートにAsanaのデータを出力
  if(result.data){
    for(var i = 0; i < result.data.length; i++){
      
      task_name = result.data[i].name
      completed_at = result.data[i].completed_at
      story_point = result.data[i].custom_fields[0].display_value

      sheet.getRange(i+2,1).setValue(task_name);
      
      if (completed_at != null){
        sheet.getRange(i+2,2).setValue(completed_at.substring(0,10));
      }
      
      sheet.getRange(i+2,3).setValue(story_point);
    }
  }
}

出力結果

出力結果は上記の通りです。

トリガーを作成

作成したスクリプトが日次で実行されるようにトリガーを作成します。これでデータが毎朝最新の状態に更新されます。

おわりに

定期的に発生する業務は自動化して大事な業務に集中することで、より生産性の高いプロジェクトにすることができたりします。

プログラムに任せられる作業はどんどん自動化させたいですね。みなさんの参考になれば幸いです。

以上、TSUZUでした。

参考サイト

本記事を執筆するにあたり下記のサイトを参考にさせていただきました。ありがとうございました。

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

Ryosuke Tsuzuura
Ryosuke Tsuzuura Technology / Technical Director / 廿浦 稜介

1991年生まれ。大学院で理論宇宙物理学を修了後、2016年にバックエンドエンジニアとしてキャリアをスタート。 金融系の基幹システム開発やC向けウェブアプリのシステムリプレイス等の案件に参画。 2019年にLIG入社し、フィリピン・セブ島にてブリッジエンジニア/テクニカルディレクター/プロジェクトマネージャー等を担当。 2021年11月にLIG Technologies Vietnam CEOに就任し、ベトナム拠点の立上げ・運営を実施。 2023年12月に退任し現職。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL