Python
タスク管理
Todoist
LineNotify

Todoistの『今日のタスク』を自分のLINEに通知する方法

やったこと

プライベートのタスクはTodoistを使って管理しています。
ただ、タスク管理していても、そもそもTodoistを確認するのを忘れてしまうということもあります。
それを防止するために、能動的に確認しにいくのではなく、受動的に知らせてほしいです。

Todoistにはリマインダーという通知機能があるのですが、タスクごとにいちいち設定していられないので使っていません。
そこで、TodoistのAPIを使って自分で通知機能を作りました!!

必要なもの

  • todoistのアカウント
  • LineNotifyの登録
  • pythonのプログラムを定期実行できる環境

Todoistとは

Todoistとはタスク管理のためのクラウドサービスです。
クラウドサービスなのでパソコンからはもちろんのこと、スマホからでも使えます。スマホアプリもあります。
タスク管理のサービスは色々使ってきましたが、Todoistが機能・デザインともに一番優れていると思っています。

LineNotifyとは

LineNotifyとはWebサービスからの通知を受けることができるLineのサービスです。
通知の方法はGmailでもよかったのですが、メールよりLineのほうが気軽なのでこっちにしました。

実装

以下コードと解説をします。

task.py
import requests

# タスクをJSON形式で取得
token = 'xxxxxxxxxxxxxxxxx' # TodoistのAPIトークン(『設定』メニューから取得できます)
filter = '#Private&(today|overdue)' # ここでは、プライベートのタスクで、期限が今日以前のものを設定しています。
response = requests.get("https://beta.todoist.com/API/v8/tasks", params={"token": token, "filter": filter}).json()

# JSONから中身だけ取り出して整形
today_task = ''
for task in response:
    today_task = today_task + task['content'] + ' \n' \

# メッセージを作成
message = '\n' \
    + '【本日のタスク】' + '\n' \
    + today_task

# LineNotifyのトークンとAPIを設定
line_notify_token = 'xxxxxxxxxxxxxxxxx' # こっちはLineNotifyのトークン
line_notify_api = 'https://notify-api.line.me/api/notify'

# 送信
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
line_notify = requests.post(line_notify_api, data=payload, headers=headers)

あとはこのコードを定期的に実行するだけです。
私の場合は、さくらのVPSを契約しているので、cronで朝・昼・夕で定期実行しています。

まとめ

タスクを忘れないようにタスク管理ツールに登録したけど、そもそもタスク管理ツールを確認するのを忘れてしまう・・・
というのを防ぐことができました!
cronで自分で通知時間帯を調整することができるので、朝起きたときに1日のタスクを確認しておきたいとか、退社前に買い物を忘れないようにしたいとか、柔軟に対応できるのが魅力ですね。