Notion API to Google Docs

Notion API to Google Docs

Have you ever tried exporting your Notion Pages to PDF? It looks horrible. In this video, I take a look at how Pages can be sent to Google Docs using the Notion API. This allows us to add things like letterhead and structured content. Perfect for letters, memos, and form letters, PDFs.

Requirements:

  • Notion Account
  • Google Docs
  • Automate.io

Step 1: Google Doc Template

Create a page in Google Docs and use {{ }} to create placeholders for your content. If you have a Google Apps account with permissions, you can save the doc as a template. But this step is not necessary. Automate will be able to see all of the pages you have in in your related doc account.

Step 2: Set up a Table in Notion as your print queue

The minimum properties for that table should be "name". I also like to add the modified date so I can see when it was last updated. We will be using Updated in Automate as the trigger for printing.

For more complex documents with placeholder functionality, create a property for each placeholder element.

image

Create the page outside of your print queue database so that you have time to write everything you need to say. Often I do this as a task, so I will create a page inside of a database for task that has my letter. It's important that the page being created is not part the database itself or it will pick up the properties carrying them into your print table and messing up that database.

Step 3: Set up Automate

The most simple flow is to just take the content from your Notion page to Google Docs. This flow only requires two steps. If you want a more complex layout with multiple placeholders, you will need to create a timer step in Automate to give you time to add the additional information to the properties. Multi-step processes require a paid Automate account.

image

For our Notion Trigger. We want to use Update Database Item. Since we've already created the page (see step 2), we want to use update, not new.

For Google Docs, we want to select the page that house our template. Then simply add the placeholder fields with the properties from our Notion table. For the inner page content, we can use "Item Content".

For a more complex flow that has properties to set, it would be good to add a timer between the triggers to give time to add the properties. This creates a multi-step flow which will required a paid account.

image
💡

IDEA: For creating form letter type documents, it would be good to create another table with all the same properties as a "staging" table. Here you could set all the appropriate properties, then when moving to the print queue they would already be there. (skipping the need for the timer)

Cons to this approach

At this time, the content that can be sent over from Notion is still limited. As the API matures, I'm certain that this process will be greatly improved. At the time of this post, here are the elements that do not come across:

Formatting:

  • Header levels H1, H2, H3
  • Color - text color & background color
  • Columns
  • Dividers, Quotes & Call outs
  • Bullets do work but they use "-" marks and are not indented properly
  • Task items use [ ] marks
  • Inline equations — the text of the equation goes over, but it looses formatting

Complex Blocks:

None of the more complex blocks like code blocks, tables, images or embeds.

Items that do work

Line breaks

Emojis (surprisingly 😄)

Dates & @mentions

Conclusion

Even with the drawbacks, there are still many uses cases that make this a very valuable option for creating nicely formatted documents. Until PDF export is improved for Notion, this is definitely a huge improvement for my process.