【GAS】Asana APIを使ってタスクを取得する
はじめに
今の会社ではタスク管理ツールとしてAsana
を使っています。
元々チーム内でTrello
を使ってたので、使い勝手としてはその上位互換といった感じです。
※拡張のしやすさで良し悪しはあるかと思いますが。
ただ既存のUIだと「自分が関係しているタスク」や「自分が所属するプロジェクトのタスク」だけを参照するのにちょっと難がある印象です。
そこで今回はAsana API
を利用して「対象のプロジェクト内のタスク」を取得するコードをGAS
で書いてみた場合の例を紹介したいと思います。
Asanaとは
- 参考:Asana公式
以下引用
Asana
は、小さなタスクから全体像まで、仕事のすべてを整理します。チームが取り組む仕事、それが大切な理由、それを完成させる方法を明確に把握できるようになります。
「カンバン形式」や「リスト形式」「ガンとチャート」など、さまざまなフォーマットでタスクの進捗を管理することができるサービスです。
競合にはTrello
やRedmine
の他に、最近よくYoutube
の広告を打っているJooto
などが挙げれられます。
Asana APIとは
- 参考:Asana API
Asana
が用意してくれているREST API
です。
公式ドキュメントにはSlackとAsana
といった感じで、有名どころのサービスとの連携方法の紹介まで記載があり、非常に親切です。
Asana APIを利用するための準備
続いてAsana API
を利用するための準備をしていきます。
具体的にはAccess Token
を取得します。
Developer Consoleへアクセス
まず開発者コンソールへAsana
アカウントでアクセスします。
URL
は下記の通りです。
メニューの 【個人アクセストークン】 のセクションから 【新規アクセストークン】 を選択します(下図参照)。
※赤で隠れている部分は既に作成してあるトークンなので、初回は表示されません。
トークン名を聞かれるので、任意の値を入力してください。
【API利用規約に同意します】 にチェックを入れて 【トークンを作成】 を押してください。
正常にトークンが作成された場合、下記のようにトークンが表示されるのでコピーします。
これで前準備は完了です。
GASからAsana APIを実行
続いてGAS
で実装していきます。
エンドポイントはhttps://app.asana.com/api/1.0/projects/【プロジェクトID】/tasks
です。
この 「プロジェクトID」 は、Asana
プロジェクトをブラウザで表示させた時にURL
に含まれる15桁くらいの数字です。
ここで取得するタスクはあくまで一覧なので、より細かい情報を参照するには別なエンドポイントを利用する必要があります。
もしくは、パラメータとしてopt_fileds
を付けることで取得したい項目を指定できます。
今回は「タスク名、期限、最終更新日、完了しているか」を取得するためname,due_on,modified_at,completed
を指定します。
リクエストヘッダのAuthorization
に、先ほど取得した 「アクセストークン」 を付けるのを忘れないようにしましょう。
/**
* Asanaからタスクを取得する
*/
function getAsanaTasks() {
// リクエストオプションを作成
var options = {
// GETメソッド
'method': 'get',
// JSON形式
'contentType': 'application/json',
// ヘッダ
'headers': {
// 認証情報
'Authorization': 'Bearer ‘ +【アクセストークン】
},
}
// Asana APIを実行しタスクを取得する
// ?opt_fields=でタスク名、期限、最終更新日、完了しているかを指定して取得する
var response = UrlFetchApp.fetch(`https://app.asana.com/api/1.0/projects/【プロジェクトID】/tasks?opt_fields=name,due_on,modified_at,completed`, options);
// 取得結果をJSONパース
var result = JSON.parse(response);
// 取得結果を配列に格納
var list = [];
if(result.data){
for(var i = 0; i < result.data.length; i++){
list.push(result.data[i]);
}
}
console.log(list);
return list;
}
コンソールに取得したデータ(list
)が表示されます。
内容は以下のようになっています。
[
{
git: "1234567890",
completed: false,
due_on: "2020-11-30",
modified_at: "2020-11-30T00:00:00.000Z",
name: "タスク①"
},
// ...
]
まとめ
今回はタスク管理ツールAsana
上のタスクデータをAsana API
を使って取得するGAS
のコードを紹介しました。
本来はここからあれこれと加工して自チーム内で利用できるようにしています。
Asana
を導入してまだ日が浅いため、十全に使いこなしているとは言い難いですが、今のところ使い勝手も良く、チーム内のタスクを管理する分には一通りの機能が揃っているのではないかなと思います。
今回はAsana
の細かい内容については紹介しなかったので、それはいずれ行いたいと思います。
Discussion