Skip to content

外部カレンダー連携

対応プロバイダ(MVP)

  • Google Calendar

Outlook(Microsoft 365)対応は後続検討。

連携の単位

  • ユーザー単位で接続(テナント単位ではない)
  • 1 ユーザーあたり 1 つの Google アカウントを接続
  • 同期対象カレンダーは複数選択可(既定はプライマリ1つ)

接続フロー(OAuth)

  • スコープ: calendar.events(読み書き)
  • リフレッシュトークンは暗号化保存(認証 / 認可 参照)
  • ユーザーが連携を解除した時点でトークンを無効化

同期方針

方向トリガー仕組み
CRM → Googleスケジュール作成 / 更新 / 削除API 呼び出し(即時)
Google → CRMカレンダー側の追加 / 更新 / 削除Push 通知(推奨)+ 定期 incremental sync

マッピング

CRM scheduleGoogle event
titlesummary
memodescription
scheduled_atstart.dateTime
終了時刻end.dateTime
external_event_idid
attendees(任意)attendees[]
  • 「終日」イベント / タイムゾーンは保持して同期
  • カレンダー側にしかないカスタムフィールドは保持しない

競合解決

  • CRM / Google で同じイベントが両方更新された場合は updated が新しい方を採用
  • 削除はどちらか一方の操作で他方も削除(「ゴーストイベント」を避ける)
  • 競合が発生したことは監査ログとアクティビティで通知

どのスケジュールを同期するか

  • 既定: ユーザーが担当する visit / call / task を同期
  • renewal / birthday(自動生成系)は同期 or 非同期をユーザー設定で選択
  • 完了 / キャンセルしたスケジュールは Google 側からも削除 or イベント名の prefix で識別

連携の解除

  • ユーザー操作で解除可能
  • 解除時の動作(テナント設定 or ユーザー設定):
    • Google 側に既に作ったイベントを 残す(既定)
    • 削除

設計上の注意

  • Push 通知の有効期限: Google Calendar の Push (Channels) は最大 ~30 日。期限前に renew するジョブを用意
  • API クォータ: Google Calendar API のクォータを尊重。一斉初期同期はバックオフ
  • ユーザーロケール: 表示はテナント / ユーザーのタイムゾーン基準。Google 側の TZ と一致を確認

権限

操作OWNERMEMBERADMIN
自分のカレンダー連携
他人の連携状況の参照
一括連携解除

未確定