Google Tasks API を使おう(その1)

Google Workspace 系のAPI全般に言えることだが、日本語の情報が出回ってなさすぎる~😓

特に、入門者向けの記事は無きに等しいので、まとめておきます。自分は、プログラミングの勉強を始めたころ、入門レベル→中級レベルの間を埋めてくれる教材がなくて苦戦しました。最近はDXへの注目が集まっており、Google APIを弄ってみたい方も増えているでしょうから、そういった方の役に立てるように記事を書いています。

さて、記事全体の構成について、まず概観しておきます。
前半では簡単な仕様を、後半では「完了済み」タスクへのアクセス方法を述べます。

GASで「完了済み」タスクを取得する方法は、自分が調べた限り、日本語での情報がネットに落ちておらず、1時間以上苦戦しました!
落とし穴になりそうなので、紹介しておきますね。

↑ この記事が長くなりすぎてしまったので、後半は次の記事に載せます

※ 途中で、この方の記事を見つけました。とても分かりやすいです。
GAS・JavaScriptの知識がある方は、自分の記事よりもこちらの方がおすすめです😂

(1)簡単な仕様

この章では、ごくごく初歩的な話しかしません。
Tasks APIについて大体掴めているという方は、後半の「(2)『完了済み』タスクへのアクセス方法」だけ読んでください。

↑ この記事が長くなりすぎてしまったので、後半は、次の記事に載せます

(1-1)何のために使うのか?

気になる方のために、どういう動機で調べ始めたか一応書いておきます。
技術的な話はしないので、ここも読み飛ばしてしまって大丈夫です。

もともとタスク管理+情報管理(メモなど)を一元化したいという欲求がありました。
さらに欲を言うなら、習慣化をアシストするアプリや、ライフログを蓄積してQOLを高める条件を発見するアプリも作りたいと思っています。

不眠症、不安障害、鬱で引きこもりの生活をしていた頃、何となく思い付いて、手動でライフログをつけてみました。
タスクの達成度やQOL(主観)も併せて記録し、数週間分をまとめてグラフにしたところ、タスクの達成度とQOLがともに起床時刻と相関していたのが面白かったのです。

幸福感のような気分の問題が、単純な条件によって左右されるのは、自分にとって大きな驚きでした。とりわけ当時は、心身の不調のために大学の勉強もできなくなっていたので、希望が見えた気がしました。
そして、漠然と「テクノロジーによってQOLを高める」ことが究極的な目的となり、スケジュール、タスク、習慣、ライフログ、QOL、メモなどを一元化するアプリを考えていました(その1年後、notionが日本に上陸し、負けた!と思いました😂)。

さて、自分が作りたかったものは、いわば自己情報の一元化アプリです(脳の拡張機能と言っても良さそうです)。
さすがに全部自作するのは大変なので、既存のGoogle APIを組み合わせて、それっぽいものを作ることにしました。

そして、スマホでもPCでも使い勝手のよい、小回りが利くインターフェイスとして注目したのが Google To Do リスト (Tasks)Google Keep でした。

(1-2)どんな風に使うのか?

iOS版「To Do リスト(Google)」の画面はこんな感じ。
シンプルで好感が持てます

メモ1:
タスクは3階層で構成されている。
タスクリスト → 個々のタスク → (必要に応じて)サブタスク
という構造である。

メモ2:
完了済みのタスクも、削除しない限り残る。
「自己管理アプリ」を作るにあたって、達成感を実感する仕組みを作りたかったので、完了済みタスクが残るのは嬉しい。

メモ3:
タスクを押すと、編集画面が開き、詳細を記入できる。
ここのテキストもAPIで拾える。そのため、自動でスプレッドシートやドキュメントにコピペできる。

例えば、「運動」タスクの詳細に「スクワット:20回」とか、「食事制限」タスクの詳細に「おにぎり:200kcal」などとメモすれば、ライフログ用のスプレッドシートに記入できる。
双方向的に使えるインターフェイスであることも嬉しい。

(1-3)使い方

GASのエディターで新しいプロジェクトを立ち上げ、サービスから「Tasks API」を追加する。それだけである。

(1-4)ドキュメンテーション(頭出し)

さて、先述の通り、Tasks API は、タスクリスト・タスク・サブタスクの3段階でタスクを整理している。

サブタスクも一種のタスクなので、タスクリストTasks.Tasklist)とタスク+サブタスク(Tasks.Tasks)の2つのクラスがある。

(1-4-1)タスクリストを見てみる

Task.Tasklist.list() で、タスクリストをリストアップできる。

function myFunction() {
  var list = Tasks.Tasklists.list();
  Logger.log(list);
}

結果はこんな感じ

{items=[{id=******, updated=2022-06-30T08:43:55.526Z, etag="************", selfLink=https://www.googleapis.com/tasks/v1/users/@me/lists/******, title=マイタスク, kind=tasks#taskList}, {selfLink=https://www.googleapis.com/tasks/v1/users/@me/lists/******, updated=2022-07-13T04:07:18.682Z, etag="******", id=******, kind=tasks#taskList, title=マイタスク2}], etag="******", kind=tasks#taskLists}

整理すると、タスクリストの大きな構造はこうなってます。

{
items=[{…}, {…}, …],
etag="************************",
kind=tasks#taskLists
}

そして、タスクリストの直下にある個々のリストの情報は、items=[…] の中に入ってます。

{
id=************************,
updated=2022-06-30T08:43:55.526Z,
etag="************************",
selfLink=https://www.googleapis.com/tasks/v1/users/@me/lists/************************,
title=マイタスク,
kind=tasks#taskList
}


さて、長くなりすぎてしまったので、この辺で打ち切ります。
今回は自分語りが多すぎましたね。すみません m(.  .)m

次回「Google Tasks API を使おう(その2)」では、
・ドキュメンテーションの概観
・「完了済み」へのアクセス方法のご紹介
・スプレッドシートとの連携
を書く予定です。

次回もよろしくお願いします。


サポートを頂けると嬉しいです。 本気で記事を書くには、多大な時間と体力が必要です。それでも、多くの人にとって有意義な記事を有料版にしたくありません。 発信活動を長続きさせるために、ご支援をよろしくお願いいたします m(_ _)m