A Microsoft Power Automate flow to synchronize Outlook 365 calendars or Google calendars. All synchronization combinations are supported:
Download the most recent zip archive of the flow:
If you want to clean / delete all blocker events:
Please see this blog post for details and usage instructions.
Initial release.
/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/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
headerInitial 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 PoetryRun pytest tests
to run all unit or integration tests defined in the tests
folder.