Skip to content

A Microsoft Power Automate flow to synchronize Outlook 365 calendars or Google calendars.

License

Notifications You must be signed in to change notification settings

MShekow/ng-outlook-google-calendar-sync

Repository files navigation

Next-Generation Outlook + Google Calendar Sync

Caution

I no longer actively maintain this project. See here for details. It should continue to work, but I might not respond to help issues and will not develop any requested features. Since this is open-source software, PRs are welcome.

A Microsoft Power Automate flow to synchronize Outlook 365 calendars or Google calendars. All synchronization combinations are supported:

  • Outlook 365 <-> Outlook 365 (within the same tenant, or across different tenants)
  • Outlook 365 <-> Google
  • Google <-> Google

Note

This flow requires that you pay for the Power Automate Premium plan because the flow makes HTTP requests using the Premium-only HTTP action!

If you are looking for a solution that works with the free plan of Power Automate, see https://github.com/MShekow/outlook-calendar-sync (Outlook 365 <-> Outlook 365) and https://github.com/MShekow/outlook-google-calendar-sync (Outlook 365 <-> Google). There is no version that supports Google <-> Google synchronization.

Instructions & download

Download the most recent zip archive of the flow:

  • To synchronize Outlook 365 with Google: download
  • To synchronize Outlook 365 with Outlook 365: download
  • To synchronize Google with Google: download

If you want to clean/delete all blocker events:

  • For Google, download this helper PowerAuto flow
  • For Outlook 365, download this helper PowerAuto flow

Please see this blog post for details and usage instructions.

Changelog of Power Automate Flow

v0.3 (2024-12-14)

  • The SharePoint-based HTTP action (which was used by default because it was free) was replaced with the Premium Http action. Reason: the SharePoint HTTP action no longer supports URLs that point to non-SharePoint servers
  • Note: the v0.3 Power Automate flow is fully compatible with the v0.2.1 sync helper service! No corresponding v0.3 release is necessary for the sync helper service.

v0.3 (2024-11-10) - no longer works!

  • New setting to configure End-to-end encryption of uploaded / downloaded mirror files (Power Automate action "Setting: cal1 upload or cal2 download encrypt or decrypt password (optional)")
  • You can now use GitHub.com repositories as mirror file server

v0.1 (2024-11-01) - no longer works!

Initial release.

Changelog of sync helper service

v0.2.1 (2024-11-20)

  • New feature: endpoint /compute-actions supports a new optional header X-Disable-Past-Event-Filter which can be set to "true". In this case, the algorithm considers all submitted events, disabling the default behavior where it only considers cal 1 / 2 events for which event.start >= <now> holds

v0.2 (2024-11-10)

  • New feature: support for GitHub.com repositories for uploading and downloading mirror files. Files are created as regular commits to the repository
  • New feature: endpoints /retrieve-calendar-file-proxy and /extract-events now support the header X-Data-Encryption-Password, encrypting / decrypting data downloaded from (or uploaded to) the location specified in the X-File-Location header

v0.1 (2024-11-01)

Initial release.

Running the Sync helper service

If you want to self-host the sync helper service, Docker is recommended. There is a Docker compose stack available.

To build the image and run the service, type docker compose up -d To stop and clean up the service, type docker compose down

If you want SSL termination (e.g. using the free SSL certificates provided by Let's Encrypt), you need to put a reverse proxy (HTTP) server in front of the sync helper service. The reverse proxy then does the SSL termination. See e.g. here for how to achieve this with Traefik, or here for how to use Nginx.

Developing the Sync helper service

Package management

The Python-based sync helper service uses Poetry for package management. To avoid conflicts between the dependencies of Poetry and the dependencies of this project, you should either install Poetry by other means (e.g. with Brew), or use separate (virtual) environments, e.g. as follows (for UNIX):

  • python3 -m venv .poetry to create Poetry's virtual env
  • ./.poetry/bin/pip install -r requirements-poetry.txt to install Poetry into that venv
  • python3 -m venv .venv to create the project's venv
  • source .venv/bin/activate to activate the project's venv
  • ./.poetry/bin/poetry install --with test (optional additional argument: --sync) to install/reinstall the dependencies with Poetry

Running tests

Run pytest tests to run all unit or integration tests defined in the tests folder.

About

A Microsoft Power Automate flow to synchronize Outlook 365 calendars or Google calendars.

Resources

License

Stars

Watchers

Forks