This is a small script and webapp by Evert Heylen. It uses the excellent notion-py library to do all the heavy lifting. The resulting URL can be used in any service that support iCalendar files. I will give a small tutorial for Google Calendar.
Go to the database you want to view as a calendar, and make sure that you have a Calendar View. Open the database as a page if you haven't done so already. Now open the Share menu:
Tutorial (for Google Calendar)
Step 1: Make a Calendar View
Here you'll want to do two things:
- Click 'Invite a Person' and invite
firstname.lastname@example.org read-only rights.⇒ NOTE: This gives my application read access to all data that lives within that database. See the FAQ for more info.
- Copy the Page Link and save for later
Step 2: Generate URL
In the form below (which is just the website https://notionics.evertheylen.eu/) you can enter two things: the Page Link from before and a format string for the title of each event in your calendar. This is based on Python
.format()syntax, using column names as keys. If you don't know what it is, leave it at the default.
You can now import the Resulting URL into Google Calendar. Click on the dots next to 'Add calendar' and select 'From URL':
In the form that follows you paste the Resulting URL you got from the form. Afterwards, you may want to rename the Calendar to something more descriptive than the URL itself.
Note: on the Android app you'll have to go into the settings and manually enable Sync for the added calendar.
Frequently Asked Questions
Can you see all my data?
Yes, I can technically see all the data that lives under that database. There is no real way around it, unless you run this yourself. To be clear, this is not all your data, but only the pages (and their subpages) within the database you shared. While this is not unlike Notion employees being able to access all your content, I can understand you trust me less than a corporation that has to maintain trust with their customers. That being said, I don't store any data: the webapp builds the calendar on the fly (i.e. whenever Google Calendar decides to synchronize).
How often does this synchronize?
As was hinted at above, it all depends on Google (or whatever service you choose to use this with). When Google decides to synchronize, it asks my server for the calendar file, which is built on the fly. No data is actually stored on my server. All that being said, according to Google it can take up to 12 hours.
Can others see my data?
No, but you are welcome to check my code for errors.
Where is the code?
If you have any more questions or remarks, feel free to contact me on email@example.com or via the slack group linked below.
Bugs and TODO's
- Filters do not work yet, this is a limitation of the library