0.はじめに
タスク管理ツールAsanaに対して
GASからAPIを叩いてタスク作成する方法をご紹介します。
1.コードサンプル
まずコードをどうぞ。
/**
* asanaAPIでタスク登録
*/
function test(){
//個人アクセストークンの取得方法はこちらhttps://asana.com/ja/guide/help/api/api
const headers = {
"Authorization": "Bearer " + "実行するアカウントの個人アクセストークン"
};
//Asanaに登録する基本的な内容 他の項目や詳細はこちらのcreate-a-task https://developers.asana.com/docs/create-a-task
const payload = {
"data":{
"workspace" : "ワークスペースのID", //ワークスペースID
"projects" : ["プロジェクトID"], //プロジェクトのURLにあります
"name" : "title", //タスクタイトル
"assignee" : "担当者メールアドレス", //タスク担当者メールアドレス
"html_notes" : "body", //htmlで本文作成したい場合bodyタグで括る必要あり
"due_on" : "2023-01-23", //タスク期日 YYYY-MM-DD形式
"followers" : ["~~~~@ドメイン.jp"] //コラボレーターアドレス 配列でいいはず 組織外アドレスは追加できなさそうです
}
};
const options = {
"method" : "post",
"contentType" : "application/json",
"headers" : headers,
"payload" : JSON.stringify(payload),
"muteHttpExceptions" : true
};
//タスク生成
const response = UrlFetchApp.fetch("https://app.asana.com/api/1.0/tasks", options);
//これで実行結果が取れます
console.log(response.getContentText());
//実行結果からタスクIDを取得、タスクURLを作成 このURLをSlackに飛ばすなり何なり
const taskId = JSON.parse(response).data.gid;
const taskUrl = "https://app.asana.com/0/" + "プロジェクトID" + "/" + taskId;
}
2.事前取得すべき情報について
いくつか事前に情報を取得する必要があります。
2-1.AsanaワークスペースIDの取得
契約している会社ごとのIDの事です。コードの最初の方で使っていますね。
ご自身の会社のIDを取得する必要があります。
Asanaにログインして、その状態で下記のリンクに飛んでください。
https://app.asana.com/api/1.0/workspaces
そうするとシンプルなテキストだけのページが表示されます。
その中のgidがワークスペースIDになります。
2-2.アクセストークンの取得方法
こちらは下記のリンクを参照しながら値を取得してみてください。
アクセストークンの取得方法
2-3.リクエストやレスポンスについて
リクエストの細かい設定方法やレスポンス内容の公式リファレンスはこちらです。
create-a-taskに関する公式情報
3.注意すべき点
上記のリンクやコードを細かく見た方はお分かりになると思いますが、
htmlでタスクbodyを作成する時のルールや、
組織外のアドレスを追加できない仕様など細かい条件があります。
上手くいかない場合、その辺りの条件が正しいか公式情報を確認してみてください。
4.活用アイデア
Googleフォームで依頼を受けて自動的にタスク化する
Asanaというとプロジェクト管理等で使われれる印象です。
が、このサイトはバックオフィスがテーマなので、バックオフィス寄りの提案です。
Googleフォームの回答があった際にGASを自動発動できるので、
その設定を利用してGASでフォームの情報をAsanaに飛ばします。
フォームからは回答者のメールアドレスや回答内容を取得可能なので、
回答者をコラボレーターに追加し、自部署担当者をAsanaタスク担当者に設定しましょう。
依頼種別ごとに複数のGoogleフォームを作成し、
内容によってタスク担当者やコラボレーターが変わるようにすると更に活用範囲が広がります。
フォームの種類があまりにも多い場合、それぞれのフォーム内のGASに対して
担当者情報等をハードコードするのはオススメできません。
担当者が変更になる時のメンテナンスコストが非常に高くなるからです。
どのフォームに誰を紐づけるか管理するスプレッドシートを用意し、
全てのフォーム⇒AsanaのGASがそのシートを参照してからタスクを作成する。
そんな仕組みにすると良いでしょう。
5.おわりに
フォームからAsanaに飛ばしたり、シート情報を元に生成したり、
GASで作成したwebアプリからタスク生成したり、色々できそうですよね。
Saasツールはこういう機能をフル活用してこそ、効果が上がると感じます。
ご活用いただけると幸いです。