[Asana API]単体タスクの取得と更新

AsanaAPIでスプレッドシート連携とタスク登録Asana API

どうも。ケニー(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”という、タスクの削除も提供されています。

次回は、「単体のタスクの絞り込み取得」をお届けします。お楽しみに。

このシリーズの目次

  1. [Asana API]Asana APIを利用する下準備
  2. [Asana API]単体タスクの取得と更新
  3. [Asana API]単体のタスクの絞り込み取得
  4. [Asana API]複数タスクの取得とフィルター掛け
  5. [Asana API]特定のプロジェクトやセクションにタスクを登録
  6. [Asana API]スプレッドシートとAsana準備編
  7. [Asana API]スプレッドシート設計とGASの下準備
  8. [Asana API]スプレッドシートクラス
  9. [Asana API]カスタムAsanaクラス
  10. [Asana API]グローバルとカスタムメニューとmain
タイトルとURLをコピーしました