Google Apps Script スプレッドシート

【2021年2月時点】Google Apps ScriptからTasksAPIを使ってToDoリストを操作してみた

【2021年2月時点】Google Apps ScriptからTasksAPIを使ってToDoリストを操作してみた

ありがたいことに、不定期に行われる将棋教室に呼ばれていて、その前に資料を送る作業があります。
送り忘れないように「Google To Doリスト」に登録するのですが、いちいち入力することを面倒と感じるようになりました。

また、『後回し』にしない技術によると、終了デッドラインだけでなく開始デッドラインも決めることで達成率があがるとのこと。
これを実行するには、1つのやるべきことに対して、2つのタスクを登録することになります。

人生でもっとも破壊的な単語は「あとで」である。ゴールを起点に「今」を選択する→逆算スケジューリング、始めさえすれば仕事は終わる→開始デッドライン活用法、など心理学で実証された実践ノウハウ。

作業数はなるべく減らしたい。
と、いうわけで、ZoomAPIに続き、「Tasks API」を使うことにしました。
使うためにやったことをまとめてみます。

 

コードを書く前に必要な作業は?

「Tasks API」は「Advanced Service」に分類されるため、使うために準備が要ります。
作業は2つ。

 

「Google APIs」で「Tasks API」を有効化する

すでに登録されているタスクを取得するだけなら必要なさそうですが、APIからタスクを追加する場合は必須です。

step
1
Google APIsへアクセスする

https://console.developers.google.com/apis/api/tasks.googleapis.com/overview?project=119371000959

step
2
有効化のボタンを押す

【2021年2月時点】Google Apps ScriptからTasksAPIを使ってToDoリストを操作してみた

これで「Google APIs」で「Tasks API」を有効化できます。

 

「Google Apps Script」の「サービス」で「Tasks API」を追加する

step
1
「Apps Script」の「サービス」の欄にある「+」を押す

【2021年2月時点】Google Apps ScriptからTasksAPIを使ってToDoリストを操作してみた

step
2
「Tasks API」を選択し、「追加」を押す

【2021年2月時点】Google Apps ScriptからTasksAPIを使ってToDoリストを操作してみた

これで「Google Apps Script」で「Tasks API」が使えるようになります。

 

コードの書き方は?

 

ToDoリストのIDを取得する

ToDoリストは複数作成することができ、それぞれIDで管理されています。
タスクの追加や削除でToDoリストのIDを求められることも多いので、まずはそれを取得しましょう。
参考:https://developers.google.com/apps-script/advanced/tasks

function GetListID() {
  const GotData = Tasks.Tasklists.list();
  if (GotData.items) {
    for (let i = 0; i < GotData.items.length; i++) {
      let ToDoList = GotData.items[i];
      console.log('リストID:' + ToDoList.id);
      // リストのIDが取得できる
    }
  } else {
    console.log('ToDoリストがありません');
  }
}

 

ToDoリストに登録されているすべてのタスクを取得する

取得しておいたToDoリストのIDを使って、登録されているタスクのタイトルとIDを取得するコードです。
タスクのIDは削除する時にも使うので、取得方法を知っておくと便利ですね。

function GetTasks(ToDoListID) {
  const GotData = Tasks.Tasks.list(ToDoListID);
  if (GotData.items) {
    for (let i = 0; i < GotData.items.length; i++) {
      let GotTask = GotData.items[i];
      console.log('タスク名: "%s" タスクID: "%s"',
                 GotTask.title, GotTask.id);
    }
  } else {
    console.log('登録されているタスクはありません');
  }
}

取得できるものは公式のリファレンスに一覧があります。
例えば、締め切り日を取得したい場合は「GotTask.due」、タスクの詳細を取得したい場合は「GotTask.notes」と書けば良いです。

 

ToDoリストにタスクを追加する

insertメソッドで、タスクの内容と追加したいToDoリストのIDを指定します。
指定できるタスクの内容は公式のリファレンスをご覧ください。

function AddTask(ToDoListID,Title,Notes,Due){
  let TaskData = {
    'title': Title,
    'notes': Notes,
    'due'  : Due
  }
 
  Tasks.Tasks.insert(TaskData,ToDoListID);
}

 

ToDoリストからタスクを削除する

deleteメソッドで、ToDoリストIDタスクIDを指定します。

function DeleteTask(ToDoListID,TaskID){
  Tasks.Tasks.delete(ToDoListID,TaskID);
}

 

個人的備忘記録

・日付はRFC 3339というフォーマットで指定する。
・締め切りの日付は指定できるが、時間はできない。(dueに日付+時間を入力しても、反映されるのは日付のみ)
パラメーターを見ると、タスクの取得にはフィルタをかけられる。
例えば、締め切り日でフィルタをかける場合は次の通り。

function GetTasksFiltering(ToDoListID) {
    const OptionalArgs = {
        dueMin: '2021-02-14T00:00:00.000Z',
        dueMax: '2021-02-21T00:00:00.000Z'
      };
    console.log(Tasks.Tasks.list(ToDoListID,OptionalArgs));
}

 

まとめ

「Google To Doリスト」を「Tasks API」を使って「Google Apps Script」で操作してみました。
管理するタスクが多ければ多いほど、APIを使うメリットが大きくなりそうな予感があります。
とりあえずの運用方法として、スプレッドシートに入力したタスク名、詳細、締め切り日を基にタスクを追加するスクリプトにして、様子を見てみます。

-Google Apps Script, スプレッドシート
-, , , , , , , ,