丁寧に解説！Makeを使ってNotionのToDoデータベースをGoogle Calenderと連携

## こちらの記事をより丁寧に解説します。

https://qiita.com/yutowac/items/e35a1d6780efd370427e#comment-961ba9eb9753a8b2d01f

構成はシンプルにこのようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/95b3e1b1-3070-dac9-c414-52c5e1957e1b.png)

決まった時刻に、Notion で作成した予定を Google Calender にアップします。

## makeでシナリオの作成
### Notion: Watch Database Items
まずはこちらを配置します。データベース内のアイテムを取得するモジュールです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/d1a90a63-8c94-8622-833c-dd7c386e192d.png)

モジュールのアイコンをタップすると設定に入ります。設定が必要なのは以下の項目です。

:::note
- Connection
- Watch Database Items
- Database ID
- Limit
:::

#### Connection
`Connection`の追加で `Connection Type` の **"Notion Internal"** を選択します。不特定多数のユーザーに公開しているなら **"Notion Public"** にします。

**"Notion Public"** の場合、 `Database ID` だけでmakeはNotionにアクセスすることができることになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/b6188688-4af8-6890-9b4b-828a2d70ac52.png)

一方、**"Notion Internal"** の場合は、アクセス許可をするために `Internal Integration Token` が必要です。このトークンを取得していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/774284aa-cf8e-9922-9c04-d159f177acf9.png)

例として今回使うデータベースを用意しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/672d20a3-de61-8740-0ca6-ccea29a26a59.png)

Notionのサイドバーから `設定` を選び `インテグレーション(Integrations)` に進みます。無い場合は `自分のコネクト` → `インテグレーションを作成(または管理)`を選択します。[こちら](https://www.notion.so/profile/integrations)のリンクから移動できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/a2301ece-dacd-84b2-66eb-b03a5bebcc77.png)

`新しいインテグレーション` で作成画面に行き、自分のワークスペースを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/4dc55898-8492-70e4-0f49-7b6511d844af.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/89540b0e-2116-29fe-130e-3d07ca05fa7d.png)

インテグレーションを保存すると **"内部インテグレーションシークレット"** というものが付与されますが、これが `Internal Integration Token`になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/892c83fc-e2cc-b48d-5def-92eb96e25c9c.png)

これをコピーして make でつくり途中の Notion モジュールの `Internal Integration Token` に貼り付け Save を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/10a658a2-362d-dadb-1df6-1b8d6b589a22.png)

#### Database ID
続いて `Database ID` が必要になります。先ほどの **"内部インテグレーションシークレット"** がアカウントとの連携を行うものでこちらでは具体的なデータベースを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/3093641d-158e-0d5e-34d4-24aedb3d80bb.png)

`Database ID` はNotionデータベースのURLから取得できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/75d1c99c-9953-f738-32ef-ecde16c7e94b.png)

こちらのXXXXXXXXXXXXXXXの部分です。
```
https://www.notion.so/XXXXXXXXXXXXXXX?v=YYYYYYYYYYYYYYY
```

:::note warn
この時データベースのあるページ全体ではなくToDoが書かれているページ (テーブル) を開いてURLを取得します。
:::

今回の例なら "Notion-GoogleCalender 連携" → "スケジュール" の位置です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/0a9b2d61-c581-9054-77c1-62217e3ed4ee.png)

`Database ID` を入れたらもう一つやることがあります。
Notion の上記の URL の場所で、三点リーダー(…)から`接続`を選び、先ほど作ったインテグレーション名を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/2ac475b4-5239-c843-b565-bcb9c12c37b4.png)

これで完了です。`Limit` など他はいじらなくて問題ないです。 **"Run Once"** を押してエラーが出なければOKです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/83d51f33-c43b-4000-c021-2f4ec4639a76.png)

:::note warn
もし1日のToDoを管理するなら`Limit`は5~10くらいを設定すると良いと思います！
:::


### Google Calender: Create an Event

モジュールの追加で `Google Calender` の `Create an Event` を選択します。
Notion で取得したアイテムから必要な情報を抜き出しカレンダーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/4851deae-8c0f-6524-7ade-dcdd02f98127.png)

設定が必要なのは以下の項目です。

:::note
- Connection
- Create an Event
- Calender ID
- Event Name
- All Day Event
- Start Date, End Date
:::

#### Connection
Connectionの追加から **"Sign in with Google"** を選び、連携させたいアカウントを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/e02d9a1c-8f94-53fb-cfc1-262c79419f09.png)

#### Create an Event
**"In Detail"** にします。ちなみに **"Quickly"** を選ぶと作成する時刻～1時間後までの予定が出来上がります。

#### Calender ID
こちらは選択すると`Connection` で選択したアカウントで管理しているカレンダーが選ばれます。デフォルトだと**自身のGmailアドレス** (Primary Calender) と "日本の祝日" 、"誕生日" などから選びます。自身のメールアドレスを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/76040468-6d7e-5273-03f0-7269d4f811d1.png)

#### Event Name
ここは結構重要です。ノーコードの中でもわかりにくい部分かと思います。
現在見えているのは先ほど **"Run Once"** で得られたデータに関する情報です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/60d7e686-b91f-d02e-b0f3-76e94845cb46.png)

主に必要なのは `Propaties Value` の中身になります。
開いてみると **"日付"**、**"詳細"**、**"予定"** となっていてNotionで追加したプロパティがあります (順番はバラバラ) 。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/d11e2bcd-e129-f982-16b6-0b70f9aa1fbe.png)

`Event Name` は **「部屋の掃除」** なので **"Plain Text"** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/bf350591-6f0a-daa3-5fbd-c5ea05b4b12d.png)

#### All Day Event
**"Yes"** を選びます。もし具体的に時間帯を決めたい場合は "No" ですが、Notionデータベースで開始と終了時間を記載しておく必要があります。

#### Start Date, End Date
`Propaties Value` の **"日付"** の **"Start"** にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/ea2dd56d-5544-dd68-8926-c0f3cb1df6e0.png)

これで設定は完了です！お疲れさまでした。

### テスト

新しく予定を入れてみます。「**ブログを書く**」としました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/38cb36c4-6af3-977e-7c0f-3268be2e3256.png)

再び **"Run Once"** を押すと2つのモジュールから「１」と表示されます。これは新たに作成した予定が1件処理されたことになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/2be8399a-2ea1-8bcb-31e5-54a3e3fce7bc.png)

カレンダーを見るとこの通り予定が追加されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/59d84584-61e6-03a3-fa27-561c6d2f437b.png)

あとはスケジューリングを行えばOKです。**"Every 15 minutes"** をクリックすると色々なスケジューリングを選べます。例えば「**毎日9:00**」など設定すると良いでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/7ff1a434-fe75-6453-27af-40cbfbd0e710.png)

シナリオの Save もお忘れなく！