[TITLE]
Odoo 与 Google 日历同步设置指南

[DESCRIPTION]
本文详细介绍如何在 Google Cloud 控制台创建项目、启用 Google 日历 API、配置 OAuth 同意屏幕并获取凭证,随后在 Odoo 中完成 Google 日历的集成、同步及常见问题排查,帮助企业实现双向日程管理。

[KEYWORDS]
Odoo, Google 日历, 同步, OAuth, API, 设置, 故障排除, 授权域名, 测试用户, 生产模式

[TRANSLATED_CONTENT]

Google Calendar 同步

将 Google 日历与 Odoo 同步,以在两个平台上查看和管理会议(更新双向进行)。此集成有助于组织日程,避免错过会议。

::: seealso
/applications/general/users/google
/applications/general/email_communication/google_oauth
:::

在 Google 中的设置

选择(或创建)项目

创建一个新的 Google API 项目并启用 Google Calendar API。首先,访问 Google API 控制台 并使用 Google 账户登录。

:::: note
::: title
注意
:::

如果是首次访问此页面,Google 会提示用户输入所在国家并同意《服务条款》。从下拉列表中选择国家并同意 ToS(服务条款)
::::

接着,点击 Select a project,选择(或创建)一个用于配置 OAuth 并存储凭证的 API 项目,点击 New Project

为 API 项目起一个清晰的名称,例如 [Odoo Sync],以便辨识。然后点击 Create 按钮。

启用 Google 日历 API

在左侧菜单中点击 Enabled APIs and Services。如果搜索栏未出现,请再次选择 Enabled APIs and Services

随后,在搜索栏中搜索 Google Calendar API,从搜索结果中选择 Google Calendar API,点击 Enable

OAuth 同意屏幕

创建完 API 项目后,需要配置 OAuth。点击左侧菜单中的 OAuth consent screen,然后点击 Get started 按钮。

:::: warning
::: title
警告
:::

个人 Gmail 账户只能使用 External(外部)用户类型,这可能需要 Google 的批准或添加 Scopes。而使用 Google Workspace 账户则可以选择 Internal(内部)用户类型。

此外,在 External 测试模式下,无需 Google 批准。此模式的用户上限为 100 人。
::::

按以下顺序完成步骤:

  1. App Information 中,App name 填写 [Odoo]User support email 填写支持邮箱,点击 Next
  2. Audience 中,选择 External,点击 Next
  3. Contact Information 中再次填写邮箱,点击 Next
  4. Finish 中勾选同意 Google API Services: User Policy,点击 Create

授权域名设置

在同意屏幕或 OAuth 客户端配置中出现的任何域名必须预先注册。进入左侧菜单的 Branding,在 Authorized domains 部分点击 Add domain,输入如 [odoo.com] 的域名,最后点击页面底部的 Save

测试用户

若希望用户能够使用个人 Gmail 账户同步,需要将其设为测试用户。进入左侧菜单的 Audience,在 Test users 部分点击 Add users,输入所需的用户邮箱,点击 Save

创建凭证

连接 Google Calendar 与 Odoo 需要 Client IDClient Secret。这是 Google 控制台的最后一步。

在左侧菜单点击 Clients,随后点击 Create Credentials 并选择 OAuth client ID,Google 将打开创建凭证的向导。

Create OAuth Client ID 中,Application Type 选择 Website applicationName 填写 [My Odoo Database]

  • Authorized JavaScript Origins 中,点击 + Add URI,输入公司 Odoo 完整的 URL。
  • Authorized redirect URIs 中,点击 + Add URI,输入公司 Odoo URL 并在末尾添加 [/google_account/authentication]。完成后点击 Create

此时会生成 Client IDClient Secret,请妥善保存。

在 Odoo 中的设置

获取 Client IDClient Secret 后,打开 Odoo 数据库,进入 Settings → Calendar,找到 Google Calendar 功能,勾选 Google Calendar 复选框。

随后,在 Google Calendar 复选框下方的相应字段中粘贴 Client IDClient Secret,点击 Save

:::: note
::: title
注意
:::

勾选 Pause Synchronization 可暂时暂停事件更新,便于测试和排查问题而无需移除凭证或卸载同步。恢复同步时,取消勾选并保存。
::::

在 Odoo 中同步日历

打开 Odoo 的 Calendar 应用,点击 Google 同步按钮,即可将 Google Calendar 与 Odoo 同步。

:::: note
::: title
注意
:::

首次同步时,页面会跳转至 Google 账户。选择拥有访问权限的 Email Account,若出现“应用未验证”提示,点击 Continue,随后再次点击 Continue 授权数据传输。
::::

至此,Odoo Calendar 已成功与 Google Calendar 同步!

:::: warning
::: title
警告
:::

强烈建议在测试数据库和测试邮箱(不用于其他目的)中先行测试 Google 日历同步,再在生产数据库中进行同步。

同步后:

  • 在 Odoo 创建事件时,Google 会向所有与会者发送邀请。
  • 在 Odoo 删除事件时,Google 会发送取消通知。
  • 在事件中添加联系人时,Google 会向所有与会者发送邀请。
  • 在事件中移除联系人时,Google 会发送取消通知。

Google Calendar 中创建事件时,可通过选择 “Don’t Send” 来阻止发送邀请邮件。
::::

故障排除同步

有时 Google Calendar 账户可能无法正确与 Odoo 同步,相关错误可在数据库日志中查看。此时需要进行排查。可通过 Reset Account 按钮进行重置,该按钮位于 Settings → Manage Users,选择相应用户后进入 Calendar 选项卡。

在正确的日历下点击 Reset Account

重置选项

以下重置选项可用于排查 Google 日历与 Odoo 同步问题:

User’s Existing Events(用户已有事件):

  • Leave them untouched:保持事件不变。
  • Delete from the current Google Calendar account:从 Google Calendar 删除事件。
  • Delete from Odoo:从 Odoo 日历删除事件。
  • Delete from both:同时从 Google Calendar 与 Odoo 日历删除事件。

Next Synchronization(下次同步):

  • Synchronize only new events:仅同步新事件。
  • Synchronize all existing events:同步所有现有事件。

选择后点击 Confirm,即可修改用户事件及同步方式。

Google OAuth 常见问题

在配置 Google Calendar 与 Odoo 时,可能会出现配置错误,需要排查。以下列出最常见的错误及解决办法。

生产 vs. 测试 发布状态

Publishing Status 设为 Production(而非 Testing) 时,会出现以下警告:

OAuth 限制为 100 个敏感范围登录,直至 OAuth 同意屏幕通过验证。此过程可能需数天。

解决办法:前往 Google API Platform ,若 Publishing StatusIn Production,点击 Back to Testing 以恢复测试状态。

未添加测试用户

若在 OAuth 同意屏幕 中未添加测试用户,会出现 Error 403: access_denied

解决办法:返回 OAuth 同意屏幕,在 APIs & Services 下添加测试用户,并在 Odoo 中使用该邮箱进行配置。

应用类型

创建凭证(OAuth Client IDClient Secret)时,如果 Application Type 选为 Desktop App,会出现 Authorization ErrorError 400: redirect_uri_mismatch)。

解决办法:删除已有凭证,重新创建凭证时将 Application Type 设为 Web Application。在 Authorized redirect URIs 中点击 ADD URI,填入:

https://yourdbname.odoo.com/google_account/authentication

其中 yourdbname 替换为实际的 Odoo 数据库名称。

:::: tip
::: title
提示
:::

确保 URI 中使用的域名(如 https://yourdbname.odoo.com/google_account/authentication)与系统参数 web.base.url 中配置的域名完全一致。可在开发者模式下通过 Settings → Technical → Parameters → System Parameters 查看并修改 web.base.url
::::

滚动至顶部