前言
最近發現有些東西還是得線上搞會比較方便
所以從 Obsidian 轉到 Notion
但我又不想一篇篇手動匯入,於是使用了 Notion 的 API
內容
Notion 幾乎所有的功能都能通過送 request 來達成
網路上也有 javascript 的 API 版本,但我選擇使用非官方的 Python API Notion SDK in Python
文件方面,我參考了官方的API 文件
裏面寫得非常詳盡,但看得出來疏於更新跟細節不完整
所以整個使用過程不是很舒服,我還詢問 Notion 官方人員跟非官方的 SDK 開發者進行 payload 的調整
我直接在 repo 發文 Reference XD
最後終於弄出來能夠自動新增 page 並帶有預設值的腳本
以我的需求來說,必須要可以自動填入標題跟內文,最好是屬性也可以帶入
大概會長這樣
以下是我自動匯入的 code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| from notion_client import Client
notion = Client(auth=NOTION_TOKEN)
def insert_to_notion(date: str, content: str, title="Work note", tag="work"):
notion.pages.create( **{ "parent": {"database_id": DATABASE_ID}, "properties": { "title": {"title": [{"type": "text", "text": {"content": title}}]}, "Tags": {"type": "multi_select", "multi_select": [{"name": tag}]}, "Created": {"date": {"start": date}}, }, "children": [ { "object": "block", "type": "paragraph", "paragraph": { "rich_text": [{"type": "text", "text": {"content": content}}] }, } ], } )
|
最後我們就可以用這個腳本批量匯入筆記了
整個過程包含跟官方來回,花了快五天
不過我的例子是,我有五百多篇格式化的筆記要把它們匯入到 Notion 上
手動太麻煩,這樣就直接搞定了(至少我知道手動一定會超過五天 XD)
順帶一提,怕的話可以考慮先用 curl 測試一筆看看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #!/bin/zsh
curl --location --request POST 'https://api.notion.com/v1/pages' \ --header 'Content-Type: application/json' \ --header 'Notion-Version: 2022-02-22' \ --header 'Authorization: Bearer <YOUR_NOTION_AUTH_TOKEN>' \ --data-raw '{ "parent": { "database_id": "<YOUR_DATABASE_ID>" }, "properties": { "title": { "title": [ { "type": "text", "text": { "content": "test_title" } } ] }, "Tags": {"type": "multi_select", "multi_select": [{"name": "Daily"}]}, "Created": {"date": {"start": "2022-03-28"}} }, "children": [ { "object": "block", "type": "paragraph", "paragraph": { "rich_text": [ { "type": "text", "text": { "content": "Yo I am here!" } } ] } } ] }'
|
使用後,大概會長這樣
Reference
How can I create new page with some contents of text
這篇文章同步發表於 Medium ,歡迎留言討論!
Medium 文章連結