Odooにはカレンダー機能があり、予定を連絡先・見積・CRMの案件に紐づけて管理できます。「この打ち合わせはどの案件のものか」「相手先は誰か」が予定から辿れるのは、Googleカレンダー単体にはない便利さです。
一方で、日々の予定はGoogleカレンダーで管理している会社が多いと思います。当社もそうでした。Googleカレンダーを見ながらOdooに予定を入れ直すのは二度手間で、結局Odooのカレンダーは使われなくなります。そこで「Googleカレンダーの予定をそのままOdooに入れ、Odoo側で案件や連絡先に紐づけられる状態」を目指しました。
本記事は「Odoo 19 の標準機能だけで、GoogleカレンダーとOdooのカレンダーを双方向同期できるか」を実際にやってみた記録です。結論から言うと、Odoo側の設定は10分で終わります。時間がかかるのはGoogle Cloud側で、しかも会社のメールがGoogleアカウントかどうかで手順が変わります。そこを中心に書きます。
| 項目 | 内容 |
|---|---|
| Odoo | 19.0 Enterprise(Odoo.sh) |
| Google側 | 各自のGoogleカレンダー |
| 使った機能 | Odoo標準の Google Calendar モジュール(google_calendar) |
自作の同期スクリプトは作っていません。Odooには最初からGoogleカレンダー連携モジュールが入っていて、作成・変更・削除・参加者を双方向に反映してくれます。作り込むより、標準に乗るほうが保守の面で圧倒的に楽です。
Odoo側は 1 と 3 だけです。2 がGoogle Cloudの作業で、4 は各ユーザーが1回だけ行います。
Odooの「アプリ」で検索の「アプリ」フィルタを外し、「Google」で検索すると Googleカレンダ というモジュールが出てきます。「有効化」を押すだけです。アプリではなくモジュール扱いなので、フィルタを外さないと出てこない点だけ注意してください。
Odooのアプリ画面で「Google」を検索したところ。「Googleカレンダ」の有効化ボタンが消えていればインストール済み
ここが本記事の本題です。Google Cloud Console(https://console.cloud.google.com/)で次の3つを行います。
「APIとサービス > ライブラリ」で Google Calendar API を検索し、「有効にする」を押します。
Google Calendar API の詳細画面。ステータスが「有効」になっていれば完了
「Google Auth Platform > ブランディング」でアプリ名とサポートメールを入れ、「対象」でユーザーの種類を決めます。ここが最初の落とし穴です(後述)。
「対象」画面。当社の場合はユーザーの種類が「外部」、公開ステータスが「テスト中」になった
「Google Auth Platform > クライアント > クライアントを作成」で、アプリケーションの種類を ウェブ アプリケーション にし、承認済みのリダイレクトURIに次を登録します。
https://<OdooのURL>/google_account/authentication Odoo.shなら https://xxxx.odoo.com/google_account/authentication です。末尾のパスは固定で、Odooのマニュアルにも書かれています。作成すると クライアントID と クライアント シークレット が表示されるので控えます。シークレットはこの画面を閉じると二度と表示されません。
作成したOAuthクライアントの詳細。リダイレクトURIにOdooの /google_account/authentication を登録している。シークレットは作成時にしか表示されない
Odooの「設定 > 一般設定」で上部の検索に「Google」と入れると、「カレンダー」セクションに Googleカレンダ のチェックボックスが出ます。チェックを入れ、2-3で控えたクライアントIDとシークレットを入れて保存します。
Odooの一般設定を「Google」で検索したところ。カレンダー > Googleカレンダ にクライアントIDとシークレットを入れる
当社は設定投入をClaude Codeに任せていたので、この部分は画面ではなくXML-RPCで ir.config_parameter の google_calendar_client_id / google_calendar_client_secret に書き込みました。どちらでも結果は同じです。
Odooの「カレンダー」アプリを開くと、表示切替の右側に「Google」ボタンがあります。押すとGoogleのアカウント選択画面に飛ぶので、普段カレンダーに使っているGoogleアカウントを選んで許可します。認可が済むとボタンにチェックが付き、「連携済み」の印になります。
Odooのカレンダー画面(週表示)。右上の「✓ Google」が連携済みの印。予定の内容はぼかしている
許可が終わるとOdooに戻り、その場で初回同期が走ります。当社の場合、Odooの予定は一気に数千件になりました。過去十数年分と、繰り返し予定の未来分がすべて入ったためです。
同期後のOdooカレンダー(月表示)。Googleカレンダーの予定がそのまま入っている。内容はぼかしている
ここまでが手順です。以下は、実際にやって引っかかった点です。
Google Cloudの同意画面で「ユーザーの種類」を 内部 にできるのは、そのプロジェクトがGoogle Workspaceの組織に属している場合だけです。当社のドメインはGoogle Workspaceではないので「内部に公開」ボタンが押せず、外部 になりました。
外部の場合、公開ステータスが「テスト中」の間は、テストユーザーに登録したGoogleアカウントしか認可できません。そこでOdooユーザーの会社メールを登録しようとしたところ、こう返されました。
不適格なアカウントは追加されません
The following email addresses are either not associated with a Google Account or the account is not eligible for designation as a test user
つまり、会社のメールアドレスはGoogleアカウントではない、ということです。考えてみれば当然で、Odooのログインメールと、Googleカレンダーを使っているアカウントは別物です。各ユーザーに「カレンダーに使っているGoogleアカウント」を聞き、そのGmailをテストユーザーに登録し直しました。
「対象」画面のテストユーザー。ここに登録したGoogleアカウントだけが認可できる(アドレスはぼかしている)
OdooのユーザーのメールとGoogleアカウントは一致していなくても同期できます。認可時に選んだGoogleアカウントのカレンダーが、そのOdooユーザーに紐づきます。
Googleの仕様で、公開ステータスが「テスト中」のアプリが発行したリフレッシュトークンは 7日で失効します。つまり週に1回、各ユーザーがOdooで「Googleと同期」を押し直す必要があります。
回避するには「対象」画面の「アプリを公開」で本番公開にします。カレンダーのスコープは「機密」扱いなので、公開しても Google の審査を通さない限り認可画面に「このアプリはGoogleで確認されていません」と警告が出ますが、「詳細 > (アプリ名)に移動」で進めば認可でき、トークンも失効しなくなります。社内利用ならこれで十分です。
Google Workspaceを使っている会社なら、最初から「内部」にすればこの問題はありません。警告も出ません。Google Workspace かどうかで、Google Cloud側の手間がまったく違います。
同期は次のタイミングで動きます。
Google側からOdooへの即時通知はありません。Googleで変えた予定がOdooに出るのも、上のどちらかの時点です。間隔は「設定 > 技術設定 > スケジュールされたアクション」で変えられます。
Odooのスケジュールされたアクション「Googleカレンダー:同期」。実行周期がここで変えられる(初期値は12時間)
そして同期は双方向なので、片方で消した予定はもう片方でも消えます。「Odooのテスト予定を消しただけ」のつもりがGoogleカレンダーから消える、が起きます。同期対象がGoogleの「メイン」カレンダーだけである点も含め、使い始める前に全員に伝えておくべき仕様です。
もう一つ。同期前にOdoo側で作ってあった予定は、Googleに新しい予定として送られます。Google側にすでに同じ打ち合わせの招待があると、同じ時間に予定が重複して並びます。当社も「Zoom: ○○様引き継ぎ」(Google由来)と「○○様引き継ぎ」(Odoo由来)が並びました。どちらかを消せば両方から消えるので、消す方を決めてから消します。
Googleカレンダー(各ユーザーのメインカレンダー)
↕ OAuth 2.0(Google Cloud のウェブ用クライアント)
Odoo 19 google_calendar モジュール
├ カレンダー画面を開いたとき: 同期
└ 定期処理「Googleカレンダー:同期」(初期値12時間ごと → 必要なら短縮) Google Cloud側の設定は1プロジェクトで全ユーザー共通、認可は各ユーザーが1回です。
できます。当社がまさにそうです。ただしGoogle Cloudの同意画面が「外部」になるため、テストユーザー登録か本番公開が必要です。
大丈夫です。「Googleと同期」を押したときに選んだGoogleアカウントのカレンダーが、そのOdooユーザーに紐づきます。
標準モジュールが同期するのは、Googleの「メイン」カレンダー1つだけです。複数カレンダーを扱うには追加開発が必要です。
Odooのカレンダー画面の同期ボタンのメニューから「Googleとの同期を停止」できます。Google側のアカウント設定からアプリのアクセスを取り消しても止まります。
Google Cloudのアプリが審査を通っていない場合に出る警告で、社内利用では正常です。「詳細」→「(アプリ名)に移動」で進めば認可できます。
当社はOdooの公式パートナーとして、Odooの導入・カスタマイズ・外部システム連携を支援しています。「うちのGoogleカレンダーでもできるか」「Microsoft 365(Outlook)のカレンダーではどうか」といったご相談は、お問い合わせフォームからお気軽にどうぞ。
※本記事の内容は2026年9月時点のOdoo 19 EnterpriseおよびGoogle Cloud Consoleの画面に基づきます。画面や仕様は変わる可能性があります。