したいこと
日々のタスクを管理したいというよりも忘れがちな〇月に契約更新とかの数か月、数年先のタスクを管理したい
- タスク管理
- 完了/未完了を切り替え
- 期日を指定
- リマインダー機能
- 昨日完了したタスク
- 今日期日のタスク
- 上記以外のタスク
今回使用するツール
- タスク管理 シンプルで管理しやすい todoist を使用
- リマインダー機能
slack の channel への通知を使用
google calendar- リマインダーが直前になる
- todoist と連携可能だが「期日指定なし」が連携されない
- integromat
- サイトが英語のみ
integromat での todoist について
integromat から使用できる todoist の 「Search for a task」では以下の項目しか返ってこないため要件を満たせない
- 足りない項目
- サブタスクかどうか?
- 期限の情報
[OUTPUT]
Bundle 1: (Collection)
Task ID: タスクID
User ID: ユーザID
Project ID: プロジェクトID
Content: 内容
Deleted: 削除されているかどうか(true/false)
Archived: アーカイブされているかどうか(true/false)
Completed: 完了されているかどうか(true/false)
The ID of the assigned user: アサインされているユーザID
Date created: 作成日時
LabelsArray
ラベル配列
そのため、todoist api を叩くことで実装する
手順
事前作業
各ツール(todoist, slack, integromat)の会員登録
各ツールの oauth の設定
-
slack slack api より設定
- 「App Name」
- 任意の名称を指定
- 「Development Slack Workspace」
- 使用するワークスペースを指定
- 「OAuth & Permissions」>「Redirect URLs」
- https://www.integromat.com/oauth/cb/slack を指定
※「Client ID」, 「Client Secret」をメモしておく
- https://www.integromat.com/oauth/cb/slack を指定
- 「App Name」
-
todoistTodoist App Management より設定-
「App display name」任意の名称を指定
-
「App service URL」未指定
-
「OAuth redirect URL」※「Client ID」, 「Client Secret」をメモしておく※今回は使用しない
-
todoist の API トークンのメモ
設定の「API トークン」をメモしておく
integromat の設定
-
「Dashboard」>「Create a new scenario」を選択
-
「What services do you want to integrate?」と表示されるため「Continue >」を押下
-
表示された画面中央の「時計」アイコンを押下して以下を指定
[毎日9:00 に実行する]
- 「Schedule setting」
- 「Run scenario:」
- 「Every day」
- 「Time」
- 9:00
- 「Run scenario:」
- 「Schedule setting」
-
表示された画面中央の「?」アイコンを押下して「http」を選択して以下を指定
[api を設定]
- 「make a request」
- 「URL」
https://beta.todoist.com/API/v8/taskshttps://api.todoist.com/rest/v1/tasks を指定 ※2019/09/02 修正
- 「Method」
- GET
- 「Content type」
- JSON(application/json)
- 「Query String」
- rest api を参照
- 「Headers」
- 「Name」
- Authorization
- 「Value」
- Bearer {事前作業でメモしたAPI トークン}
- 「Name」
- 「Show advanced settings」
- チェックを入れる
- 「URL」
- 「make a request」
-
「+」アイコンを押下後「slack」を選択して以下を指定
- 「create a message」
- 「Connection」
- 「Connection name」
- 任意の接続名
- 「Client ID」
- 事前作業でメモした「Client ID」を指定
- 「Client secret」
- 事前作業でメモした「Client secret」を指定
- 「Connection name」
- 「Where to send the message」
- to a selected channel
- 「Channel」
- メッセージを投稿したいチャネルを指定
- 「Text」
- 投稿したいメッセージを指定
- 「Show advanced settings」
- チェックを入れる
- 「Connection」
TODO
- operation を使いすぎなためAPIの戻り値を配列化してメッセージを構築するようにする