Important
This Power Automate flow is no longer maintained. It has been superseded by this Next-Generation flow.
A Microsoft Power Automate flow to synchronize an Outlook 365 with a Google calendar.
In contrast to Desktop solutions such as https://www.outlookgooglecalendarsync.com, this solution runs in the cloud and does not require a Desktop PC to be running.
This is a fork of the outlook-calendar-sync project, which synchronizes two Outlook 365 calendars.
Note: this Outlook <-> Google sync flow is not battle-tested yet!!
Download the zip archive from here.
If you want to get rid of all blocker events, you can use this helper PowerAuto flow.
The Google calendar API (and/or the corresponding Power Automate action) has various limitations:
- The Google APIs do not seem to expose the visibility (e.g. public, private), response type (e.g. tentative), reminders, or the show as (busy, free) attributes. Thus, we cannot synchronize them to Outlook. Conversely, we also cannot set these attributes when creating/updating Google calendar events.
- The Google APIs do not expose the timezone of the events, thus we always set UTC for Outlook calendar events.
- The Google APIs do not expose the color that you can assign to events in the Google calendar web interface or app.
- The attendees are not synchronized, because the synchronization algorithm uses that field to correlate events, i.e., the ID of the source event is stored as an attendee in the target / SyncBlocker event.
Some limitation details are also discussed in the implementation notes.
Important
v0.9 introduces major changes to the synchronization core logic. The main new feature is that the location field is now synchronized. However, running multiple parallel flows (to synchronize more than two calendars) is no longer supported! Please carefully read the points below for more details.
v0.9 of the flow also consumes a few more actions than v0.8, thus you might reach your daily quota/limit more quickly. If you don't have a strong need to synchronize the location field (or if you want to synchronize more than two calendars), you should stay on v0.8 or older!
- WARNING: if you are upgrading from 0.8 or older, you must first run the Delete SyncBlocker events flow to delete all old SyncBlocker events. You must run the Delete SyncBlocker events flow once for every calendar that is affected by your v0.8 (or older) synchronization flow.
- Note: the zip archive of the Delete Syncblocker events flow has been updated, so that it can delete SyncBlocker events created with v0.9 or newer. If you run into problems with v0.9 and want to revert to v0.8, make sure that you download the new version of the Delete SyncBlocker events flow (and re-import it in case you already had the old version), to properly clean your SyncBlocker events.
- The location field is now synchronized. In v0.8 and older, the location field of the SyncBlocker events used to store the ID of the source event. In v0.9, that ID is now stored in a fake email address in the first required attendee of the SyncBlocker event. Make sure not to delete this attendee!
- The SyncBlocker prefix is now optional, because the synchronization algorithm now disambiguates real events from SyncBlocker events via the required attendees field. If you want, you can now set the SyncBlocker prefix to an empty string, and instead use a category to visually disambiguate your real vs. blocker events in Outlook. You may now also change the SyncBlocker prefix at any time, the flow will automatically update the subject/title of all events accordingly (in v0.8 and older, you were not allowed to change the prefix after running the first sync).
- For already-synchronized events, changes made to the title / subject of the source event are now propagated to the SyncBlocker event.
- Initial release, based on version 0.8 of the
outlook-calendar-sync