ありがたいことに、不定期に行われる将棋教室に呼ばれていて、その前に資料を送る作業があります。
送り忘れないように「Google To Doリスト」に登録するのですが、いちいち入力することを面倒と感じるようになりました。
また、『後回し』にしない技術によると、終了デッドラインだけでなく開始デッドラインも決めることで達成率があがるとのこと。
これを実行するには、1つのやるべきことに対して、2つのタスクを登録することになります。
作業数はなるべく減らしたい。
と、いうわけで、ZoomAPIに続き、「Tasks API」を使うことにしました。
使うためにやったことをまとめてみます。
コードを書く前に必要な作業は?
「Tasks API」は「Advanced Service」に分類されるため、使うために準備が要ります。
作業は2つ。
「Google APIs」で「Tasks API」を有効化する
すでに登録されているタスクを取得するだけなら必要なさそうですが、APIからタスクを追加する場合は必須です。
step
1Google APIsへアクセスする
https://console.developers.google.com/apis/api/tasks.googleapis.com/overview?project=119371000959
step
2有効化のボタンを押す
これで「Google APIs」で「Tasks API」を有効化できます。
「Google Apps Script」の「サービス」で「Tasks API」を追加する
step
1「Apps Script」の「サービス」の欄にある「+」を押す
step
2「Tasks API」を選択し、「追加」を押す
これで「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を使うメリットが大きくなりそうな予感があります。
とりあえずの運用方法として、スプレッドシートに入力したタスク名、詳細、締め切り日を基にタスクを追加するスクリプトにして、様子を見てみます。