どうも。ケニー(tsujikenzo)です。このシリーズでは「[Asana API]スプレッドシート連携でタスク登録をしよう」をお届けしています。
今日は3回目です。ちょっと短い内容です。
前回のおさらい
前回は、「単体タスクの取得と更新」をお届けしました。
ワークスペースやタスクの各GIDさえわかっていれば、エンドポイント(URL)のパラメーター(末尾)に追記すれば、タスクを取得できました。
まぁ厳密に言うとエンドポイントはURLではなく、URLはURIの一部なんですけどね。
REST APIにおけるURI(Uniform Resource Identifier)は、インターネット上のリソースを一意に識別するための文字列です。
エンドポイントはhttps://~という形なので、URLと呼んでいいと思います。
脱線しましたが、前回、単体タスクを取得したら、タスクの全情報が表示されて少々見辛かったです。これを解決します。
今回は、「単体のタスクの絞り込み取得」です。
今日のアジェンダ
- クエリパラメーター
- タスクの詳細を絞り込み指定する
- クエリパラメーターを確認する
- 単体タスクの詳細を絞り込む
- opt_pretty
クエリパラメーター
単体タスクを取得するエンドポイントはこちらでした。
https://app.asana.com/api/1.0/tasks/{task gid}
これに、パラメーターとして、 ?opt_fildes= を付けることで、取得したい項目(○○○,▲▲▲などのカンマ区切り)を指定できます。
https://app.asana.com/api/1.0/tasks/{taskGid}?opt_fields=○○○,▲▲▲,◇◇◇◇
?(クエスチョン)から始まるのをみてもわかる通り、クエリ(問い合わせる、訪ねる)パラメーターと呼ばれています。
タスクの詳細を絞り込み指定する
どんな項目で絞り込み指定ができるかというのは、公式リファレンスのGet a taskの「QUERY PARAMS」で確認できます。
ADD STRINGをクリックします。
リスト表示をクリックします。
絞り込み指定したい項目を1つクリックします。今回は、担当者(assignee)をクリックします。
同様に、completed(完了/未完了)とdue_on(期日)も選択しました。
クエリパラメーターを確認する
クエリパラメーターを確認するには、右カラムの3点メニューをクリックし、JavaScriptをクリックします。
サンプルコードの3行目に、クエリパラメーターを含むURLが表示されています。
各項目が、カンマ区切りになっていることが確認できます。
単体タスクの詳細を絞り込む
以下のコードを、別のスクリプトファイルに貼り付けましょう。
function getAsanaTaskDetails() {
const accessToken = ACCESS_TOKEN; // グローバルエリアに記述されたアクセストークン
const taskGid = TASK_GID; // グローバルエリアに記述されたタスクGID
const url = 'https://app.asana.com/api/1.0/tasks/' + taskGid + '?opt_fields=assignee,completed,due_on';
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());
}
}
関数getAsanaTaskDetails()を実行すると、絞り込み指定された情報のみが表示されています。
opt_prettyってなに?
opt_prettyは、Asana APIなどのREST APIを使用する際に、レスポンスのJSONデータを見やすく整形(pretty-print)して返すようにリクエストするためのクエリパラメーターです。
このパラメーターをリクエストに含めることで、APIからの応答が、人間が読みやすい形式でフォーマットされます。
具体的には、改行やインデントが適用された形でJSONデータが返されます。By ChatGPT
もし、opt_pretty機能をONにしたばあいは、このようなURLになります。
const url = 'https://app.asana.com/api/1.0/tasks/' + taskGid + '?opt_fields=assignee,completed,opt_pretty=true';
JSONはただのテキストデータなので、本来は改行やインデントなどされていません。
しかしながら、GASでは、opt_prettyを指定しなくてもエディター側の出力時にJSONを整形してくれていますので、指定不要です。
まとめ
以上で、「単体のタスクの絞り込み取得」をお送りしました。
短い内容でしたが、クエリパラメーターによるタスク情報の絞り込みは、プログラミングの効率化にも役立ちます。
単体タスクをの情報全体をガバっと取得して、assigneeでフィルター掛けして~という記述が省けますので。
次回は、「複数タスクの取得とフィルター掛け」をお届けします。お楽しみに。