この記事は GAS道場 Advent Calendar 2019 の22日目の記事です。 Google Apps Script(GAS)をこれから使おうという方向けのアドベントカレンダーになります。
今回は、Google ToDoのタスクを操作する方法についての紹介をしたいと思います。
タスク一覧とタスクを取得する
では、まずはタスクを取得してみましょう。
function myFunction() { var taskLists = Tasks.Tasklists.list(); if (taskLists.items) { for (var i = 0; i < taskLists.items.length; i++) { var taskList = taskLists.items[i]; Logger.log('Task list with title "%s" and ID "%s" was found.', taskList.title, taskList.id); listTasks(taskList.id); } } else { Logger.log('No task lists found.'); } } function listTasks(taskListId) { var tasks = Tasks.Tasks.list(taskListId); if (tasks.items) { for (var i = 0; i < tasks.items.length; i++) { var task = tasks.items[i]; Logger.log('Task with title "%s" and ID "%s" was found.', task.title, task.id); } } else { Logger.log('No tasks found.'); } }
こちらのスクリプトは、GASのドキュメントにも書いてあるものをちょっと修正しています。
また、こちらのスクリプトを実行するために、ライブラリを使えるようにしないといけないため、以下の設定をする必要があります。
リソース → Googleの拡張サービスを選択します。
Tasks APIの項目のところをオンにします。
以上で設定が完了です。
これで、スクリプトを実行するとタスクリストのIDや各タスクのIDを取得することができます。
期限が過去のタスクを更新する
では、タイトルでも長く書きましたが、期限が過去の未完了のタスクというのは、期限を今日にしてしまおうって思ったのです。 なので、期限を今日に修正してみます。
function main() { var taskListId = '[タスクリストのIDを入力する]'; var tasks = Tasks.Tasks.list(taskListId); if (tasks.items) { for (var i = 0; i < tasks.items.length; i++) { var task = tasks.items[i]; if (new Date(task.due) < new Date()) { now = new Date(); task.due = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + 'T00:00:00.000Z' Tasks.Tasks.update(task, taskListId, task.id) } } } else { Logger.log('No tasks found.'); } }
指定のタスクリストに対して、過去の期限を今日に更新するものになります。
例えば、このようなタスクがあった場合、このスクリプトを実行すると・・・
このように、過去のタスクのみが更新されました。
このスクリプトを1日1回実行するようにしておくと良いのかもと思いました。
さいごに
今回はGoogle ToDoのタスクの取得だったり、更新の操作をすることができました。ただ、期限を時間単位・分単位で設定する方法がわからずそこはまだできず。。そのような課題はありますが、これもまた夢が広がりそうです。