やったこと
プライベートのタスクはTodoistを使って管理しています。
ただ、タスク管理していても、そもそもTodoistを確認するのを忘れてしまうということもあります。
それを防止するために、能動的に確認しにいくのではなく、受動的に知らせてほしいです。
Todoistにはリマインダーという通知機能があるのですが、タスクごとにいちいち設定していられないので使っていません。
そこで、TodoistのAPIを使って自分で通知機能を作りました!!
必要なもの
- todoistのアカウント
- LineNotifyの登録
- pythonのプログラムを定期実行できる環境
Todoistとは
Todoistとはタスク管理のためのクラウドサービスです。
クラウドサービスなのでパソコンからはもちろんのこと、スマホからでも使えます。スマホアプリもあります。
タスク管理のサービスは色々使ってきましたが、Todoistが機能・デザインともに一番優れていると思っています。
LineNotifyとは
LineNotifyとはWebサービスからの通知を受けることができるLineのサービスです。
通知の方法はGmailでもよかったのですが、メールよりLineのほうが気軽なのでこっちにしました。
実装
以下コードと解説をします。
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日のタスクを確認しておきたいとか、退社前に買い物を忘れないようにしたいとか、柔軟に対応できるのが魅力ですね。