Notionで追加したToDoをGoogle Calenderに連携する
1/18
NotionからNotionカレンダーという新しいサービスが出ました。そちらも是非見てみてください。
次の機能を持ったGoogle Calenderをmakeでつくっていきます
- Notionに新しい予定を追加する → Googleカレンダーに自動的に予定を追加する
- Notionの予定に変更を加える → Googleカレンダーに変更を同期する
- Notionでステータスを完了にする → Googleカレンダーの予定を削除する
私は毎朝、その日のToDoをNotionで整理しています。具体的な時間を決める時もありますし、「今日まで」くらいの粒度のものもあります。ただ予定の確認や通知はGoogle Calenderで行っているので、そちらで見えるようにしたいと思いました!
「全部Googleカレンダーで予定管理すれば良くない?」
と思うかもしれませんが、少し勝手が違います。Notionは一日のToDoを管理します。具体的には、家庭のこと、仕事のこと、勉強、その他など。フリーランスで家で働いているのでつい仕事に集中しちゃうのですが、他のこともしっかりやっていきたいのでこのようにしています。。
一方、Googleカレンダーは共有相手が違うので仕事とプライベートで分けていたりするので、NotionとGoogleカレンダーの2つを使ってToDo管理しています。
makeをiPaaSとして使用
NotionとGoogle Calenderのつなぎこみはmakeで行います。
makeはノーコードでGUIベースでシステムを連携させることができるソフトウェアです。
NotionとGoogle Calenderでの連携に関しては、Notionのデータベースにアイテムを追加・変更・削除(今回はステータスの変更としています)など少なくとも3つの動きがあった時にGoogle Calenderを更新する必要があるので、このような分岐をGUIで設計・管理することができるのは非常にありがたいですね。
makeのシナリオ
このようなシナリオとなります。こうしたノード状の遷移図を使いながら開発を進めていきます。
実はこのシナリオはmakeのテンプレートを改造したものです。人気のあるプラットフォームであれば、多くのシナリオが公開されています。
個々のモジュールの紹介
Notion:Watch Database Items
Notionの監視を行います。NotionアカウントとDatabase IDを入力すればOKです。
Database IDはデータベースのURLのこの部分です。
Router
分岐をつくります。設置してルート先に行く条件を定義します
ルートの点線をクリックすると設定できます。
それぞれ以下の条件になっています。
- ルート1(Doesn’t Exist):カレンダーの新規作成につながります。
「作成時刻と最終編集時刻が等しい」かつ「アイテムのステータスが"未着手"」
- ルート2(Exist):カレンダーの更新につながります。
「カレンダーのタイトルが存在する」かつ「作成時刻と最終編集時刻が異なる」
1.ルート3(Delete):カレンダーの削除につながります。
「カレンダーのタイトルが存在する」かつ「アイテムのステータスが完了」
Google Calender:Create an Event
先ほどのルート1でNotionに新規のアイテムが追加されたときにカレンダーをつくります。
主要な設定項目は 「Connection」「Calender ID」「All Day Event」 です。「All Day Event」は任意ですが、今回は時刻を指定しないということで「Yes」にしています。
「Connection」「Calender ID」はともに自身のGoogle Calenderのアカウントを選択すればOKです
!!POINT!!
Google Calenderの更新のためにはカレンダーのどの予定を更新するのかを選択する必要があります。これはGoogle Calenderの 「Event ID」 という情報で一意に決定します。つまり、新規のカレンダーが生成されないと、このIDを取得することができないので、この設計ではGoogle Calenderで新規の予定が追加されたタイミングで一度別の場所にEvent IDを渡しています。そこでもう一つNotionのUpdate a Database Itemというモジュールとつないでそちらに「Event ID」を渡しています。
Google Calender:Update an Event
Createのモジュールと同様に「Connection」「Calender ID」はともに自身のGoogle Calenderのアカウントを選択します。
こちらのEvent IDに先ほどGoogle CalenderからNotionに渡したデータを選択しましょう。
Google Calender:Delete an Event
Create、Updateのモジュールと最低限必要な情報は同じです。「Connection」「Calender ID」はともに自身のGoogle Calenderのアカウントを選択します。
同様にEvent IDにGoogle CalenderからNotionに渡したデータを選択しましょう。
動かしてみた
makeでシナリオを実行することで動作確認できます。
どのルートに進んだか、どこでエラーが出たかを簡易に見ることができます。
新規作成
更新
削除
アップデートしたい部分
1時間程度で正常に動作する状態をつくることができました。一度Google CalenderからNotionにデータを渡すところがつまづきポイントでした。
今回はNotionのアイテムそのものを監視しましたが、アイテム内にテンプレートをつくる場合があると思います。その中のToDoのチェックボックスを入れた時にGoogle Calenderから予定を削除する動きにも挑戦したいです。