Небольшой скрипт, который помогает синхронизировать календарь Exchange (он же Outlook) c Google. Скрипт достаточно специфичный и решает мой кейс.
- Я хочу, чтобы события календаря Outlook появились в моём Google календаре. При чём те, которые я принял, появились не просто в моём календаре, а втором моём Google календаре. Второй Google календарь специальный общий календарь, в котором важные для меня события, требующие обязательного моего присутствия.
- Я хочу, чтобы события из второго моего Google календаря были добавлены в Outlook календарь. Но события где я поставил статус Свободен в календарь, добавлять в Outlook не надо.
- Необходимо настроить OAuth и получить
access_token.json
. Инструкция - https://ai.google.dev/gemini-api/docs/oauth - Создать
./creads
и положить туда файлaccess_token.json
.
Необходимо заполнить .env
файла. Для получения идентификатора второго Google календаря нужно выполнить скрипт
get_calendars.py
. Он вернёт список всех календарей на аккаунте.
Для синхронизации просто запустить main.py
Для того чтобы руками каждый раз не запускать синхронизацию можно сформировать небольшой bash скрипт и запускать его в кроне. Пример скрипта:
#!/bin/bash
source /{{Путь до проекта}}/.venv/bin/activate
cd /{{Путь до проекта}}
export $(grep -v '^#' .env | xargs)
/{{Путь до проекта}}/.venv/bin/python main.py >> /{{Путь до проекта}}/success.log 2>> /{{Путь до проекта}}/error.log
deactivate
В календаре Outlook синхронизированные события будут иметь тип Частное событие(sensitivity == "Private"
). Таким образом я отделю события, которые
точно в календарь Google отправлять не надо.