前回の記事では、Google Apps Script(GAS)を使ってTodoistのタスクを取得する方法について解説しましたが、今回はその続きとして、タスクを更新する方法について紹介します。REST APIとSync APIを使ったタスクの更新方法をそれぞれ見ていきましょう。
REST APIでタスクを更新する
まず、TodoistのREST APIを使ってタスクを更新する方法です。特定のタスクIDを指定して、そのタスクの情報を更新します。更新内容はupdateData
オブジェクトとして渡され、APIリクエストに含まれます。
// REST APIでタスクを更新する関数
function updateTaskInREST(taskId, updateData) {
const url = `https://api.todoist.com/rest/v2/tasks/${taskId}`;
_fetchFromTodoistAPI(url, 'post', updateData);
Logger.log(`Task ${taskId} successfully updated in REST API.`);
}
関数のポイント
- taskId: 更新対象のタスクのIDを指定します。
- updateData: 更新するフィールドと値を含むオブジェクトです。例えば、タスクの名前や期日などを変更する際に使用します。
-
POSTリクエスト: REST APIではタスクの更新に
POST
メソッドを使います。 -
APIリクエストの送信:
_fetchFromTodoistAPI
関数を用いて、リクエストを送信します。
使用例
例えば、以下のようにして特定のタスクの名前を更新できます。
const taskId = '1234567890'; // 変更するタスクのID
const updateData = { content: 'Updated task name' };
updateTaskInREST(taskId, updateData);
上記の例では、タスクの名前を「Updated task name」に変更します。
Sync APIでタスクを更新する
次に、Sync APIを使ってタスクを更新する方法です。Sync APIを使うと、より複雑な操作が可能になります。ここでは、Sync APIに「commands」オブジェクトを送信し、タスクを更新するリクエストを行います。
// Sync APIでタスクを更新する関数
function updateTaskInSync(taskId, updateData) {
const url = "https://api.todoist.com/sync/v9/sync";
const payload = {
"commands": [{
"type": "item_update",
"uuid": Utilities.getUuid(), // 一意の識別子を生成
"args": Object.assign({ "id": taskId }, updateData)
}]
};
_fetchFromTodoistAPI(url, 'post', payload);
Logger.log(`Task ${taskId} successfully updated in Sync API.`);
}
関数のポイント
-
commands: Sync APIでは「commands」という形式で一連の操作を指定します。ここでは
item_update
というコマンドでタスクの更新を行います。 - uuid: リクエストごとに一意の識別子(UUID)を生成して設定します。これにより、リクエストの重複を防ぐことができます。
- args: 更新するタスクIDと、そのタスクに対する更新内容を指定します。
使用例
Sync APIを使った例も、REST APIと同様にタスクの名前を変更することができます。
const taskId = '1234567890'; // 変更するタスクのID
const updateData = { content: 'Updated task name with Sync API' };
updateTaskInSync(taskId, updateData);
この例では、Sync APIを使ってタスクの名前を「Updated task name with Sync API」に変更しています。
REST APIとSync APIの使い分け
- REST API: 単純なタスクの操作や軽量なリクエストを行いたい場合に適しています。タスクの取得や単一のタスクの更新にはこちらが便利です。
- Sync API: 同時に複数のタスクを操作したり、リクエストの整合性を保つためにUUIDを管理したりする必要がある場合に適しています。大量のデータや複雑な操作を行う際に力を発揮します。
まとめ
この記事では、Google Apps Scriptを使ってTodoist API経由でタスクを更新する方法について説明しました。REST APIとSync APIの違いを理解し、状況に応じて適切な方法を選択することで、Todoistのタスク管理がより柔軟になります。