もっと便利にGoogle ToDo を使おう

Google ToDoリスト、非常に便利ですよね。
会社ではGoogle Workspace使っているので、カレンダーと共に横で開くタスクとカレンダーに入れて便利に使っています。
しかしTODOタスクは日付と詳細しか表示できず、カテゴリーはリストという感じでになっているので、TODOタスクはカレンダーで見ながらも別に開きたいところです。
特に業務でスプレッドシートを使っている他の業務や予定などTODO場合同期させたいなんて思うわけです。
早速スプレッドシートにGoogleToDoを読み込んで見ましょう
使い方は簡単、ライブラリで許可してスクリプトからライブラリを入れるだけ
手順としては、簡単に書くと以下です。
- TasksAPIを有効にする。
- スクリプトからライブラリを追加
- 必要なスクリプトを書く
- 実行をゴニョゴニョ書く
TasksAPIを有効にする
最初は利用するのに、「API ライブラリへようこそへアクセス」へアクセスし、Tasks APIを検索して有効にします。
参考:https://console.cloud.google.com/apis/library

早速有効にします。


スクリプトからライブラリを追加

次はスプレッドシートを開いて、AppsScriptをクリックします。

新しい画面が開き、右にサービスというのあるので、プラスボタンを押してサービスを追加します。

あとはTasksAPIを追加するだけです。
必要なスクリプトを書く
早速スクリプトを書きます。こちらもサンプルがあるので、参考を元に記述します。
まずはToDoリストにはそれぞれIDがあるので取得します。
参考:https://developers.google.com/apps-script/advanced/tasks
/**
* Lists tasks titles and IDs.
*/
function listTaskLists() {
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);
}
} else {
Logger.log('No task lists found.');
}
}
次ID以下のタスクを取得します。
スプレッドシートのURLはhttps://docs.google.com/spreadsheets/d/00000000000000000000000000/edit#gid=0のようになっているので、
この00000000000000000000000000がスプレッドシートのIDになります。
なので、変数か定数で、以下書いておくと便利かもしれません。
// シート情報
var id = "00000000000000000000000000";
var spreadsheet = SpreadsheetApp.openById(id);
var sheet = spreadsheet.getSheetByName('シート1');
こちらもサンプルを参考掲載します。
/**
* Lists tasks titles and IDs.
*/
function listTaskLists() {
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);
GetTasks(taskList.id)
}
} else {
Logger.log('No task lists found.');
}
}
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('登録されているタスクはありません');
}
}
当然ですが、スプレッドシートに書き込むときにセルを指定する必要があります。var taskList = taskLists.items[i];として配列として0(ゼロ)から始まりますが、スプレッドシートはA1、B1など1から始まりますので、for文を使いときは何か別の変数を用意するか回している変数以外に範囲を決める必要があります。
あまりいい書き方ではないですが、わかりやすい書き込みとして、シート用先頭の数字を決めておくか、現在シートから値を取得するも良いかと思います。
function listTaskLists() {
var taskLists = Tasks.Tasklists.list();
if (taskLists.items) {
//まぁこんなところに書くのあれですが、ようはシート1~の指定をしておくという事で、
var si = 1;
for (var i = 0; i < taskLists.items.length; i++) {
var taskList = taskLists.items[i];
Logger.log('タスク リスト "%s" and ID "%s" was found.',
taskList.title, taskList.id);
sheet.getRange(si,2).setValue(taskList.title);
si++;
}
} else {
Logger.log('No task lists found.');
}
}
実行をゴニョゴニョ書く

実際にテストして、実行させるにはボタンを作ってスクリプトを割り当てるか、トリガーを作る必要があります。
簡単に書けるが最初は戸惑うGAS
個人的な意見ですが、GAS(Google Apps Script)はJavascriptやらjQuaryを触っている方ならわかりやすいと思いますが、定期的に変わる仕様と場所、それとライブラリ。そして参考として色々検索して模索するのが大変かと思います。とくにGoogleのアカウントは会社やプライベートやらいくつも利用している人が多いと思うので、権限が違うなんてあったりします。また結構使えるライブラリも多いので公式サイトをみながら地道に使って見ましょう。
