11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2023

Day 20

予定はGoogle Calenderで追いたい。でもToDoの作成はNotionでやりたいからmakeで連携した

Last updated at Posted at 2023-12-20

image.png

Notionで追加したToDoをGoogle Calenderに連携する

1/18
NotionからNotionカレンダーという新しいサービスが出ました。そちらも是非見てみてください。

次の機能を持ったGoogle Calenderをmakeでつくっていきます

  1. Notionに新しい予定を追加する → Googleカレンダーに自動的に予定を追加する
  2. Notionの予定に変更を加える → Googleカレンダーに変更を同期する
  3. 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. ルート1(Doesn’t Exist):カレンダーの新規作成につながります。
    「作成時刻と最終編集時刻が等しい」かつ「アイテムのステータスが"未着手"」
  1. ルート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でシナリオを実行することで動作確認できます。
どのルートに進んだか、どこでエラーが出たかを簡易に見ることができます。

「Run」で実行

エラーの内容も見ることができます。

新規作成

更新

削除

アップデートしたい部分

1時間程度で正常に動作する状態をつくることができました。一度Google CalenderからNotionにデータを渡すところがつまづきポイントでした。
今回はNotionのアイテムそのものを監視しましたが、アイテム内にテンプレートをつくる場合があると思います。その中のToDoのチェックボックスを入れた時にGoogle Calenderから予定を削除する動きにも挑戦したいです。

11
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?