📋

Google Home に話しかけ、Google Keep を経由して Todoist にタスクを追加する(IFTTT不要、要サーバー)

2022/09/28に公開

2022年9月から、Google アシスタントと IFTTT の仕様変更により、Google Home に話しかけて Todoist に任意の単語でタスクを追加することができなくなってしまいました。
ここでは、Google Home からは Google Keep にタスクを追加し、 keep2todoist という非公式の同期スクリプトを別途サーバーで稼働させ、Google Keep に追加したタスクをサーバー経由で Todoist に追加する手順を紹介します。

Google Keep で Todoist への同期用リストを作成する

keep2todoist では Google Keep の特定のリストを対象とし、その中に含まれているタスクをまとめて Todoist に移動(Keep からは削除)します。のちほど設定ファイルに記載するため、ここでは例として "Todo" というリストを作成します。ブラウザからは☑のアイコン「新しいリスト」をクリックしてタイトルを入力すればOKでした。
リストを作成後、Google Homeに「Todo(リスト名)リストに〇〇を追加して」と言えば、対象のリスト内にタスクを追加できます。まずはここで Google Keep に対して追加できるかどうかを確認しておきましょう。

サーバーで keep2todoist を設定する

keep2todoist では起動後に一定間隔(デフォルトでは 60 秒)ごとに Google Keep を確認するため、常時実行できるサーバーが必要になります。私はさくらのVPSを借りているので事足りましたが、無料で済ませたい場合はここがネックになる人は多いかもしれません。

まずは keep2todoist を clone します。

$ git clone https://github.com/airosB/keep2todoist.git
$ cd keep2todoist/app

設定ファイルのサンプルをコピーして必要な情報を記載します。ここでは先ほど作成した Google Keep の "Todo" リストに含まれているタスクを Todoist の "Google Assistant" プロジェクトに移動するように設定しています。

$ cp config.example.yaml config.yaml

vim config.yaml などで設定ファイルを編集します。

update_interval_s: 60 # 同期間隔(秒)
google_username: yourUsername # Google アカウント名を入力します
google_password: canBeAnAppPassword # Google アカウントのパスワードを入力します
todoist_api_token: todoistApiKey # Todoist の API トークンを入力します
keep_lists:
  - Todo: # Google Keep のリスト名
    due_str_en: today # オプション: ここでタスクの期日を英語で設定できます
    todoist_project: 'Google Assistant' # オプション: 指定しない場合はインボックスに追加されます

Todoist の API トークンはデスクトップアプリの 設定->連携機能->APIトークン から生成、コピーができます。

Python3 と pip がインストールされていれば設定は以上です。私の場合は、Python3 はインストールされていたのですが、何故か pip がなかったので pip documantation を参考にインストールしました。
keep2todoist は Docker でも起動できるようですが、私は試していません。

最後に requirements を install してからスクリプトを実行します。

$ python3 -m pip install -r requirements.txt
$ python3 app.py

これで 60 秒ごとに Google Keep から Todoist にタスクが移動されます。サーバーで常に実行するには daemon 化などが必要ですが、ここでは割愛します。

参考

Discussion