どうも。ケニー(tsujikenzo)です。このシリーズでは「[Asana API]スプレッドシート連携でタスク登録をしよう」をお届けしています。
今日は2回目です。
前回のおさらい
前回は、「Asana APIを利用する下準備をしよう」をお届けしました。
無事に、GASからマイタスクを登録できて感動しましたね。
今回は、「単体タスクを取得したり更新したりしよう」です。
今日のアジェンダ
- タスクを取得する下準備
- 単体タスクを取得する
- 単体タスクを更新する
タスクを取得する下準備
まず、タスクが空っぽではいけません。マイタスクに、手動でタスクを追加しましょう。
ついでに、タスクに期日を設定しておきましょう。
タスクGIDを確認する
実は、タスクには固有のID(タスクGIDと呼んでいます)が振られています。
タスクを1つクリックすると、ブラウザのURLで、タスクGIDが確認できます。
単体タスクのエンドポイント
単体タスクの情報などをGASで取得するには、前章で紹介したタスクのエンドポイントに、パラメーターとしてタスクGIDを追加します。
https://app.asana.com/api/1.0/tasks/{task gid}
次に紹介する、GASのコード内に使用します。
単体タスクを取得する
GASでプログラミングしていきます。
前回はタスクを追加するので、ソースコードの中のmethodは「POST」でしたが、今回は取得するので、「GET」です。
以下のコードを、別のスクリプトファイルに貼り付けましょう。
// 取得したいタスクのGID
const TASK_GID = "あたなたのタスクID";
function getAsanaTask() {
const accessToken = ACCESS_TOKEN; // グローバルエリアに記述されたアクセストークン
const taskGid = TASK_GID; // グローバルエリアに記述されたタスクGID
const url = 'https://app.asana.com/api/1.0/tasks/' + taskGid;
const options = {
method: 'get',
headers: {
'Authorization': 'Bearer ' + accessToken
},
muteHttpExceptions: true // HTTP例外をミュートする(エラーレスポンスを取得するため)
};
try {
const response = UrlFetchApp.fetch(url, options);
const task = JSON.parse(response.getContentText());
console.log(task);
} catch (e) {
console.log("Exception when calling TasksApi->get_task: " + e.toString());
}
}
関数getAsanaTask()を実行すると、実行ログに、単体タスクの全情報が表示されます。
情報が多すぎるので、見辛いです。これを解決するのは、次回です。
単体タスクを更新する
さて、単体タスクのGIDがわかっていれば、タスクの更新もかんたんです。
今回はさきほどの「ブログを書く」というタスクの期限を、指定日(2024年7月7日)に変更してみましょう。
その他にも、タスクの説明を更新したり、タスクが完了したかどうかを表すブール値(trueまたはfalse)を設定してみましょう。
単体タスクのエンドポイントは、さきほどと同じです。
https://app.asana.com/api/1.0/tasks/{task gid}
前回はタスクを取得するので、ソースコードの中のmethodは「GET」でしたが、今回は更新するので、「PUT」です。
以下のコードを、別のスクリプトファイルに貼り付けましょう。
function updateAsanaTask() {
const accessToken = ACCESS_TOKEN; //グローバルエリアに記述済み
const taskGid = TASK_GID; //グローバルエリアに記述済み
const url = 'https://app.asana.com/api/1.0/tasks/' + taskGid; // タスクを更新するエンドポイント
const payload = {
data: {
name: "Modified task",
notes:"はじめてのAsana APIです",
completed:true
// 他の変更したいフィールドもここに追加できます
}
};
const options = {
method: 'put',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer ' + accessToken
},
payload: JSON.stringify(payload),
muteHttpExceptions: true // HTTP例外をミュートする(エラーレスポンスを取得するため)
};
try {
const response = UrlFetchApp.fetch(url, options);
const task = JSON.parse(response.getContentText());
console.log(task);
} catch (e) {
console.log("Exception when calling TasksApi->update_task: " + e.toString());
}
}
関数updateAsanaTask()を実行すると、実行ログにレスポンスオブジェクトが表示され(割愛します)、タスクが更新されています。
これまた、ちょっと感動します。
まとめ
以上で、「単体タスクを取得したり更新したりしよう」をお送りしました。
単体のタスクを取得するには、タスクのGIDが重要でした。
そして、単体のタスクGIDが取得できるなら、更新もかんたんにできるという内容でした。
ちなみに、methodには”delete”という、タスクの削除も提供されています。
次回は、「単体のタスクの絞り込み取得」をお届けします。お楽しみに。