Contents
連携の基本概念と選択肢
| 方法 | 主な特徴 | メリット | デメリット |
|---|---|---|---|
| 公式 API + サードパーティ自動化ツール(Make・Zapier) | Notion のデータベースと Google カレンダーを「双方向」に同期させるワークフローを構築 | - 完全自動化 - 変更が即時に反映 - 権限は最小スコープで付与可能 |
- 初回設定に多少の学習コストが必要 |
| Google カレンダー埋め込み | Notion ページ内に iFrame でカレンダーを表示 | - 手順がシンプル - 追加費用なし |
- 編集は Google 側のみ - 公開 URL の管理が必要 |
| 手動エクスポート / インポート | CSV 等でデータをやり取り | - ツール不要 | - 更新が自動化されず、作業負荷が大きい |
参考情報
- Notion API 公式ドキュメント: https://developers.notion.com/
- Google Calendar API(認証・スコープ): https://developers.google.com/calendar/api
事前に確認すべきアカウント・権限
| 確認項目 | 推奨設定 | チェックポイント |
|---|---|---|
| Notion アカウント | ワークスペースの管理者またはデータベース編集権限を持つユーザー | → Notion の「Settings & Members」> 「Members」 でロールを確認 |
| Google アカウント | カレンダーへの 表示・編集 権限が付与された状態 | → Google の「Security」> 「Third‑party apps with account access」で許可状況を確認 |
| API スコープ | https://www.googleapis.com/auth/calendar(最小権限) |
Make/Zapier で OAuth 設定時に表示されるスコープを必ず確認 |
| タイムゾーン | 両サービスとも同一(例: 日本標準時 JST) | Notion の「Settings」> 「My account」> 「Time zone」 と Google カレンダーの設定画面で統一 |
PDF 版チェックリスト
下記リンクから PDF ファイル(約2 ページ) をダウンロードできます。実装前に必ず目を通し、項目がすべて ✅ になることをご確認ください。
Makeで実現する双方向同期の手順
※本手順は2024年9月現在の UI を基に作成しています。Make の画面が更新された場合は公式ヘルプをご参照ください。
1. Make アカウントを作成・ログイン
- https://www.make.com/ にアクセスし、メールアドレスまたは Google アカウントでサインアップ。
2. 「シナリオ」(Scenario) を新規作成
- ダッシュボード右上の 「Create a new scenario」 をクリック。
- 左側パネルから 「Notion」 と 「Google Calendar」 のモジュールをそれぞれドラッグ&ドロップ。
3. Notion 側トリガーを設定
| 項目 | 設定例 |
|---|---|
| モジュール名 | Watch Database Items(データベースの変更を監視) |
| データベース ID | 対象カレンダー用データベースの URL から取得(例: https://www.notion.so/xxxx の最後の文字列) |
| フィルタ条件 | 「Date」プロパティが設定されたアイテムのみ |
ヒント:Notion API はページ単位で変更を検知します。データベース全体の監視は「Updated at」フィールドで絞り込むと効率的です。
4. Google Calendar に「作成 / 更新」アクションを追加
- Notion のトリガーに続けて Google Calendar → Create an Event を選択。
- 必要なマッピングを設定
| Notion プロパティ | Google カレンダー項目 |
|---|---|
| Title | Summary(タイトル) |
| Start Date | Start time |
| End Date | End time (optional) |
| Location | Location |
| Reminder (チェックボックス) | Notification (10 分前) |
5. Google Calendar → Notion の逆方向シナリオを作成
同様に Google Calendar → Watch Events をトリガーにし、Notion → Update Database Item アクションで対応するデータベース行を更新します。
- 「Event ID」を Notion データベースの「External ID」プロパティに保存しておくと、一意に紐付けが可能です。
6. エラーハンドリングとリトライ設定
- Error handling タブで「Continue on error」→「Send notification」へ。
- API のレートリミット(Google は 1 秒あたり 10 リクエスト程度)を超えた場合は自動的に再試行されますが、スケジュール間隔 を 5 分以上に設定すると安全です。
7. シナリオのテスト実行
- 「Run once」ボタンで手動テスト。
- Notion に新規タスクを作成 → Google カレンダーにイベントが生成されるか確認。
- Google 側で日時変更 → Notion のデータベースが即時更新されることを検証。
8. シナリオの有効化
テストが成功したら 「Schedule」 タブで自動実行間隔(例: 5 分ごと)を設定し、右上の 「ON」 スイッチで有効化します。
よくあるエラーと対処法
| エラーコード・症状 | 主な原因 | 推奨対策 |
|---|---|---|
401 Unauthorized(Make のログに表示) |
Google アカウントの OAuth トークンが期限切れ、またはスコープ不足 | Make の Google Calendar 接続を再認証し、calendar スコープを必ず選択 |
| タイムゾーンズレ(イベント時間が 1 時間前後になる) | Notion と Google カレンダーのタイムゾーン設定が異なる | 両サービスで JST (UTC+9) に統一し、データベースの「Date」プロパティにタイムゾーン情報を含める |
| 重複イベントが作成される | 同一アイテムに対して両方向シナリオが同時に走った | Notion データベースに 「External ID」 カラムを設け、既存の ID がある場合は更新のみ実行するロジックを追加 |
| 「Rate limit exceeded」 | API 呼び出し回数が上限を超えた(特に大量インポート時) | バッチ処理で 1 回あたりの更新件数を 50 件以下に抑える、もしくは実行間隔を伸ばす |
| 埋め込み URL が 404 エラーになる | Google カレンダーの共有設定が「非公開」になっている | 「Settings & sharing」→「Access permissions」で 「Make available to public」 をオフにし、代わりに 限定共有リンク を使用 |
ポイント:エラー発生時はまず 認証・権限 → タイムゾーン → データ型 の順で確認すると速やかに原因が特定できます。
埋め込み方式との比較・セキュリティポイント
1. 手軽さ vs 自動化
| 観点 | 双方向同期(Make 等) | 埋め込み表示 |
|---|---|---|
| 導入コスト | 中程度(設定とテストが必要) | 低(URL貼り付けだけ) |
| データ更新の自動化 | 完全双方向・リアルタイムに近い | 手動更新のみ |
| 情報統合度 | Notion のタスク管理とスケジュールが一体化 | カレンダーは単なるビュー |
| セキュリティ | OAuth による最小権限付与、トークンは期限付き | 公開 URL が外部に漏れるリスクあり |
2. 安全に埋め込むためのベストプラクティス
- 限定共有設定
- カレンダーを「特定ユーザーのみ」にし、リンク自体が認証済みユーザーだけに有効になるようにする。
- HTTPS の使用(デフォルトで必須)
- iFrame 埋め込みは常に
https://から取得した URL を利用。 - 閲覧権限の最小化
- 必要最低限の情報だけを表示するカレンダー(例: 社内会議のみ)を別途作成し、埋め込み対象にする。
- 定期的なリンク更新
- 共有設定変更や権限見直し時は埋め込む URL を再取得し、古いリンクが残らないようにする。
まとめ:情報の機密性が高い場合は「双方向同期」または 限定共有カレンダー + 埋め込み の組み合わせを検討してください。
付録:チェックリスト(PDF)と参考リンク集
| カテゴリ | 内容 | URL |
|---|---|---|
| チェックリスト | Notion × Google Calendar 同期設定チェックリスト(PDF) | https://example.com/notion-google-sync-checklist.pdf |
| 公式ドキュメント | Notion API 開発者向けガイド | https://developers.notion.com/ |
| Google Calendar API 認証・スコープ一覧 | https://developers.google.com/calendar/api/guides/auth | |
| Make(自動化) | Make の公式チュートリアル:Notion ↔︎ Google Calendar 同期 | https://www.make.com/en/tutorials/notion-google-calendar-integration |
| Zapier 代替例 | Zapier で作る双方向同期(英語) | https://zapier.com/apps/google-calendar/integrations/notion |
| セキュリティ情報 | Google の「Third‑party app access」ベストプラクティス | https://support.google.com/accounts/answer/3119585 |
| 埋め込み手順(日本語) | Google カレンダーの埋め込みコード取得方法(公式ヘルプ) | https://support.google.com/calendar/answer/41207?hl=ja |
まとめ
- Notion は公式に双方向同期機能を提供していません が、API と信頼できる自動化サービスを組み合わせれば実装は十分可能です。
- 設定前に必ず 権限・タイムゾーン・データ型 を確認し、PDF チェックリストで抜け漏れがないか点検してください。
- セキュリティは 最小権限の OAuth と 限定共有リンク で確保できます。埋め込み方式を選ぶ場合も公開 URL の取り扱いに注意しましょう。
このガイドが、Notion と Google カレンダーを安全かつ効率的に連携させる第一歩となれば幸いです。質問や実装中の課題は、コメント欄や Notion コミュニティ(https://www.notion.so/community)で気軽にシェアしてください。