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
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.
- 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
Initial release.
- New feature: endpoint
/compute-actions
supports a new optional headerX-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 whichevent.start >= <now>
holds
- 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 headerX-Data-Encryption-Password
, encrypting / decrypting data downloaded from (or uploaded to) the location specified in theX-File-Location
header
Initial release.
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.
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 venvpython3 -m venv .venv
to create the project's venvsource .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
Run pytest tests
to run all unit or integration tests defined in the tests
folder.