documentation/content/applications/productivity/calendar/google.rst
jero-odoo fe75484a45 [IMP] Calendar sync: changing title of google doc
closes odoo/documentation#11347

X-original-commit: e0b025fce0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-11-15 17:32:24 +00:00

260 lines
11 KiB
ReStructuredText

===============================
Google Calendar synchronization
===============================
Synchronize Google Calendar with Odoo to see and manage meetings from both platforms (updates go in
both directions). This integration helps organize schedules, so a meeting is never missed.
.. seealso::
- :doc:`/applications/general/users/google`
- :doc:`/applications/general/email_communication/google_oauth`
Setup in Google
===============
Select (or create) a project
----------------------------
Create a new Google API project and enable the Google Calendar API. First, go to the `Google API
Console <https://console.developers.google.com>`_ and log into the Google account.
.. note::
If this is the first time visiting this page, Google will prompt the user to enter a country and
agree to the Terms of Service. Select a country from the drop-down list and agree to the
:abbr:`ToS (Terms of Service)`.
Next, click :guilabel:`Select a project` and select (or create) an API project to configure OAuth
in, and store credentials. Click :guilabel:`New Project`.
.. image:: google/new-api-project.png
:align: center
:alt: Create a new API project to store credentials.
.. tip::
Give the API Project a clear name, like "Odoo Sync", so it can be easily identified.
Enable Google calendar API
--------------------------
Now, click on :guilabel:`Enabled APIs and Services` in the left menu. Select :guilabel:`Enabled APIs
and Services` again if the :guilabel:`Search bar` doesn't appear.
.. image:: google/enable-apis-services.png
:align: center
:alt: Enable APIs and Services on the API Project.
After that, search for `Google Calendar API` using the search bar and select :guilabel:`Google
Calendar API` from the search results. Click :guilabel:`Enable`.
.. image:: google/enable-google-cal-api.png
:align: center
:alt: Enable the Google Calendar API.
OAuth consent screen
--------------------
Now that the API project has been created, OAuth should be configured. To do that, click on
:guilabel:`OAuth consent` in the left menu and then select the :guilabel:`User Type`.
.. warning::
*Personal* Gmail Accounts are only allowed to be **External** User Type, which means Google may
require an approval, or for *Scopes* to be added on. However, using a *Google WorkSpace* account
allows for **Internal** User Type to be used.
Note, as well, that while the API connection is in the *External* testing mode, then no approval
is necessary from Google. User limits in this testing mode is set to 100 users.
In the second step, :guilabel:`OAuth Consent Screen`, type `Odoo` in the :guilabel:`App name` field,
select the email address for the :guilabel:`User support email` field, and type the email address
for the :guilabel:`Developer contact information` section. Then, click :guilabel:`Save and
Continue`.
Skip the third step, :menuselection:`Scopes`, by clicking :guilabel:`Save and Continue`.
Next, if continuing in testing mode (External), add the email addresses being configured under the
:guilabel:`Test users` step, by clicking on :guilabel:`Add Users`, and then the :guilabel:`Save and
Continue` button. A summary of the app registration appears.
Finally, scroll to the bottom, and click on :guilabel:`Back to Dashboard`.
Now, the OAuth consent has been configured, and it's time to create credentials.
Create credentials
------------------
The *Client ID* and the *Client Secret* are both needed to connect Google Calendar to Odoo. This is
the last step in the Google console. Begin by clicking :guilabel:`Credentials` in the left menu.
Then, click :guilabel:`Create Credentials`, and select :guilabel:`OAuth client ID`, Google will open
a guide to create credentials.
Under :menuselection:`Create OAuth Client ID`, select :guilabel:`Website application` for the
:guilabel:`Application Type` field, and type `My Odoo Database` for the :guilabel:`Name`.
- Under the :guilabel:`Authorized JavaScript Origins` section, click :guilabel:`+ Add URI` and type
the company's Odoo full :abbr:`URL (Uniform Resource Locator)` address.
- Under the :guilabel:`Authorized redirect URIs` section, click :guilabel:`+ Add URI` and type the
company's Odoo :abbr:`URL (Uniform Resource Locator)` address followed by
`/google_account/authentication`. Finally, click :guilabel:`Create`.
.. image:: google/uri.png
:align: center
:alt: Add the authorized JavaScript origins and the authorized redirect URIs.
A :guilabel:`Client ID` and :guilabel:`Client Secret` will appear, copy these to a notepad.
Setup in Odoo
=============
Once the *Client ID* and the *Client Secret* are located, open the Odoo database and go to
:menuselection:`Settings --> General Settings --> Integrations --> Google Calendar`. Check the box
next to :guilabel:`Google Calendar`.
.. image:: google/settings-google-cal.png
:align: center
:alt: The Google Calendar checkbox in General Settings.
Next, copy and paste the *Client ID* and the *Client Secret* from the Google Calendar API
credentials page into their respective fields below the :guilabel:`Google Calendar` checkbox. Then,
click :guilabel:`Save`.
Sync calendar in Odoo
=====================
Finally, open the :menuselection:`Calendar` app in Odoo and click on the :guilabel:`Google` sync
button to sync Google Calendar with Odoo.
.. image:: google/sync-google.png
:align: center
:alt: Click the Google sync button in Odoo Calendar to sync Google Calendar with Odoo.
.. note::
When syncing Google Calendar with Odoo for the first time, the page will redirect to the Google
Account. From there, select the :guilabel:`Email Account` that should have access, then select
:guilabel:`Continue` (should the app be unverifed), and finally select :guilabel:`Continue` (to
give permission for the transfer of data)`.
.. image:: google/trust-odoo.png
:align: center
:alt: Give Odoo permission to access Google Calendar.
Now, Odoo Calendar is successfully synced with Google Calendar!
.. warning::
Odoo highly recommends testing the Google calendar synchronization on a test database and a test
email address (that is not used for any other purpose) before attempting to sync the desired
Google Calendar with the user's production database.
Once a user synchronizes their Google calendar with the Odoo calendar:
- Creating an event in Odoo causes Google to send an invitation to all event attendees.
- Deleting an event in Odoo causes Google to send a cancellation to all event attendees.
- Adding a contact to an event causes Google to send an invitation to all event attendees.
- Removing a contact from an event causes Google to send a cancellation to all event attendees.
Events can be created in *Google Calendar* without sending a notification by selecting
:guilabel:`Don't Send` when prompted to send invitation emails.
Troubleshoot sync
=================
There may be times when the *Google Calendar* account does not sync correctly with Odoo. Sync issues
can be seen in the database logs.
In these cases, the account needs troubleshooting. A reset can be performed using the
:guilabel:`Reset Account` button, which can be accessed by navigating to :menuselection:`Settings
app --> Manage Users`. Then, select the user to modify the calendar, and click the
:guilabel:`Calendar` tab.
.. image:: google/google-reset.png
:align: center
:alt: Reset buttons highlighted on the calendar tab of the user.
Next, click :guilabel:`Reset Account` under the correct calendar.
Reset options
-------------
The following reset options are available for troubleshooting Google calendar sync with Odoo:
.. image:: google/reset-calendar.png
:align: center
:alt: Google calendar reset options in Odoo.
:guilabel:`User's Existing Events`:
- :guilabel:`Leave them untouched`: no changes to the events.
- :guilabel:`Delete from the current Google Calendar account`: delete the events from *Google
Calendar*.
- :guilabel:`Delete from Odoo`: delete the events from the Odoo calendar.
- :guilabel:`Delete from both`: delete the events from both *Google Calendar* and Odoo calendar.
:guilabel:`Next Synchronization`:
- :guilabel:`Synchronize only new events`: sync new events on *Google Calendar* and/or Odoo
calendar.
- :guilabel:`Synchronize all existing events`: sync all events on *Google Calendar* and/or Odoo
calendar.
Click :guilabel:`Confirm` after making the selection to modify the user's events and the calendar
synchronization.
Google OAuth FAQ
================
At times there can be misconfigurations that take place, and troubleshooting is needed to resolve
the issue. Below are the most common errors that may occur when configuring the *Google Calendar*
for use with Odoo.
Production vs. testing publishing status
----------------------------------------
Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of
:guilabel:`Testing`) displays the following warning message:
`OAuth is limited to 100 sensitive scope logins until the OAuth consent screen is verified. This may
require a verification process that can take several days.`
To correct this warning, navigate to the `Google API Platform
<https://console.cloud.google.com/apis/credentials/consent>`_. If the :guilabel:`Publishing Status`
is :guilabel:`In Production`, click :guilabel:`Back to Testing` to correct the issue.
No test users added
-------------------
If no test users are added to the :guilabel:`OAuth consent screen`, then an :guilabel:`Error 403:
access_denied` populates.
.. image:: google/403-error.png
:align: center
:alt: 403 Access Denied Error.
To correct this error, return to the :guilabel:`OAuth consent screen`, under :guilabel:`APIs &
Services`, and add test users to the app. Add the email to be configured in Odoo.
Application Type
----------------
When creating the credentials (OAuth *Client ID* and *Client Secret*), if :guilabel:`Desktop App` is
selected for the :guilabel:`Application Type`, an :guilabel:`Authorization Error` appears
(:guilabel:`Error 400:redirect_uri_mismatch`).
.. image:: google/error-400.png
:align: center
:alt: Error 400 Redirect URI Mismatch.
To correct this error, delete the existing credentials, and create new credentials, by selecting
:guilabel:`Web Application` for the :guilabel:`Application Type`.
Then, under :guilabel:`Authorized redirect URIs`, click :guilabel:`ADD URI`, and type:
`https://yourdbname.odoo.com/google_account/authentication` in the field, being sure to replace
*yourdbname* in the URL with the **real** Odoo database name.
.. tip::
Ensure that the domain (used in the URI:
`https://yourdbname.odoo.com/google_account/authentication`) is the exact same domain as
configured in the `web.base.url` system parameter.
Access the `web.base.url` by activating :ref:`developer mode <developer-mode>`, and navigating to
:menuselection:`Settings app --> Technical header menu --> Parameters section --> System
Parameters`.