Skip to main content

Bidirectional synchronize calendar events within notion and google calendar

Project description

CI PyPI version pre-commit Code style: black

Notion-GCal-Sync

Notion-GCal-Sync is a python application to bidirectional synchronize calendar events within notion and google calendar.

Getting started

  1. Install package from PyPi

    pip install notion-gcal-sync
    
  2. Get your Google Calendar credentials.json like this

  3. Get your Notion Token like this

  4. Set up the Notion page like this

  5. Create config folder ~/.notion-gcal-sync and copy the credentials.json inside

    Linux (or WSL)

    cp ~/Downloads/client_secret_*.apps.googleusercontent.com.json "~/.notion-gcal-sync/client_secret.json"
    

    Windows Copy your client_secret_*.apps.googleusercontent.com.json as client_secret.json inside C:\Users\dude\.notion-gcal-sync

    # TODO
    
  6. Run the script and fill out the prompts. If not sure skip the optional bits.

    1. Make sure you get your timezone right
      1. Use your TZ database name as timezone_name
      2. Use the UTC DST offset as timezone_diff
    2. google_mail: Your mail you are using in google calendar want to have synced
    3. notion_database_url The url for the page you set up in 4.
    4. notion_token: The token you set up in 3.
    notion-gcal-sync
    
    2021-10-28 19:55:41,198 [INFO] /home/worker/.notion-gcal-sync/config.yml does not exist
    Create non-existing /home/worker/.notion-gcal-sync/config.yml? [Y/n]: y
    2021-10-28 19:55:42,630 [INFO] Configuring /home/worker/.notion-gcal-sync/config.yml
    default_event_length [60]:
    no_date_action [skip]:
    timezone_name [Europe/Berlin]:
    timezone_diff [+02:00]:
    google_mail (e.g name@gmail.com): cooldude@gmail.com
    notion_database_url [https://www.notion.so/***?v=***&p=]:
    notion_token: secret_ASDFASDFCASDF
    
  7. It will prompt you to authenticate yourself for google. This will create a token.json.

    $ notion-gcal-sync
    ...
    Please visit this URL to authorize this application:
    https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=***
    

For more information follow these instructions.

Usage

Make sure you followed the setup and configured the config.yml with your notion token and page for Notion API and gathered and setup credentials client_secret.json for Google Calendar API.

notion-gcal-sync

Docker

To run inside the container you need to add the volume at ~/.notion-gcal-sync

docker run -v ~/.notion-gcal-sync:/home/worker/.notion-gcal-sync notion-gcal-sync

If you want to update the setup within the cli or only map the credentials, you'll need to add interactive mode -it and for authenticating a new token you'll also need --net=host

docker run --net=host -it \
     -v ~/.notion-gcal-sync/client_secret.json:/home/worker/notion-gcal-sync/client_secret.json \
     notion-gcal-sync

If you do not want to mount, build it yourself with your credentials.

FROM ghrc.io/ravio1i/notion-gcal-sync
COPY token.json /home/worker/token.json
COPY config.yml /home/worker/config.json

Notes

BE AWARE OF THE FOLLOWING:

  • This sync will update your source links in gcal. Links to mail etc. will get overwritten with a link to the notion page. The original links will be put on top of the description
  • This sync will update all your invites from other calendars not specified to your default calendar. There is a button on gcal to restore back
  • Goals defined from calendar apps are skipped.
  • Recurrent original events are skipped. Recurrent occurrences of events are created one by one in notion. Changing in notion will change only an occurrence in GCal.

With around ~2500 events in gcal the sync:

  • to get all events took ~1min

Known Limitations

  • The Last update of an event of notion and google calendar are checked on minute base. When changing an event more then once within a minute and syncing right away

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notion-gcal-sync-1.1.9.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

notion_gcal_sync-1.1.9-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file notion-gcal-sync-1.1.9.tar.gz.

File metadata

  • Download URL: notion-gcal-sync-1.1.9.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.8

File hashes

Hashes for notion-gcal-sync-1.1.9.tar.gz
Algorithm Hash digest
SHA256 60e9acd7b7d81190c8292bfab6470c22a4b2624b54db12f14f8afba094f562bc
MD5 a82372944d5fed58769a5712616f0b4f
BLAKE2b-256 f52e3518d3b803488f75c0baf929bbef7cb7b714ffeee2cd6c4028b95db3052f

See more details on using hashes here.

File details

Details for the file notion_gcal_sync-1.1.9-py3-none-any.whl.

File metadata

  • Download URL: notion_gcal_sync-1.1.9-py3-none-any.whl
  • Upload date:
  • Size: 30.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.8

File hashes

Hashes for notion_gcal_sync-1.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 5d1b0724a66a54c197ff6b2df78b019c5725b204addf83225f5389902daf1ef2
MD5 a0fadddc35747ed799099005633f39e6
BLAKE2b-256 c70674ccc51662e4fd5b9b65e7e9bc987e426215c31bcb83e91d2f84d7fbb65a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page