• AI 是什麼?
    • Deep Learning
    • Machine Learning
    • Reinforcement Learning
  • Android
    • Android 開機流程
    • OTA 升級
    • Partition
  • 筆記雜學
    • Notion 你的第二大腦
    • Life Operating System
    • 人生資料庫
  • 旅行足跡
    • 日本交換
    • 單車環島
    • 新竹一日遊s
  • 生活隨筆
    • 日更30 – 小金魚的人生實驗室
    • 未來規劃
    • 閱讀分享
Robin Kuo
程式學習|筆記雜學|旅行足跡
Notion 你的第二大腦筆記雜學

【NotionAPI-2】Python 新增、修改、刪除 Notion Database (Page)

by Robin Kuo 2022-01-23

內容目錄

Toggle
  • 前言
  • 前置作業
  • 1. 新增 Database 內部資料
  • 2. 修改 Database 內部資料
  • 3. 刪除 Database 內部資料

前言

前陣子想把電腦中一些資料轉移到 Notion 上,純手動太花時間了,就下定決心花點時間研究 Notion API,結果查來查去中文的網站上查不到容易體驗的文章,只好自己研究,就在不斷的試錯浪費不少時間…

以下透過一段簡短的範例,希望使用 Python 處理 Notion 資料自動化有興趣的人,也可以少走彎路

看完本篇內容,你將會透過 python :

  1. 新增 Database 內部資料
  2. 修改已存在的 Database 內部資料
  3. 刪除 Database 內部資料

前置作業

本篇內容是基於 requests 這個模組,搭配 NotionAPI 來抓取 Notion 資料
若是不了解怎麼申請 Notion API 機器人,或不清楚 token 與 database_id 的用處
可以參考【Notion API-1】,用 Python 自由操作 Notion

以下內容會透過「交通」這個範例 Database 來實作,比較方便對照參考

1. 新增 Database 內部資料

跟之前在抓取 Database 相同,一樣透過 post 來回傳給 Notion API 的訊息
不過另外有兩項更動:

  1. pages — 由於 Database 中每一「橫列」代表一個 page,因此新增 database 內部資料實際上就是創建 page
  2. data — 創建這個 page 所想要帶的資料,必須包含:
    • parent
    • properties
可以透過 GET 取得 properties 的格式
name = "船"
move = "水面"

data = {
    "parent": {"type": "database_id", "database_id": "eff11fc6866949afa5ac4327996a93da"},
     'properties': {
         "名稱":   {"title": [{"type": "text", "text": {"content": name}}]},
         '移動方式': {'rich_text': [{"text": {"content": move}}]},
    }
}

定義完 data,透過 requests.post 將內容送出,如下:

requests.post(
    "https://api.notion.com/v1/pages",
    json=data,
    headers={"Authorization": "Bearer "+token, "Notion-Version": "2021-05-13"},
)

再回到 Notion,可以看到「船」被順利新增了!


2. 修改 Database 內部資料

修改 Database 內部資料就是針對 Page 的內容作更動,跟「新增」一樣要提供修改的 data
可以只針對部分修改,例如將 「船」→ 「水上摩托車」

也是有兩個要注意的部分

  • page_id — 因為修改是一次針對一個特定 page 進行修改,需要有 page_id
  • patch — HTTPS verbs 中代表「修改」
name = "水上摩托車"

data = {
    "parent": {"type": "database_id", "database_id": "eff11fc6866949afa5ac4327996a93da"},
    'properties': {
         "名稱":   {"title": [{"type": "text", "text": {"content": name}}]},
	#'移動方式': {'rich_text': [{"text": {"content": move}}]},
    }
}

page_id = "dd51028912d0407b85694d905a930a92"
r = requests.patch(
    "https://api.notion.com/v1/pages/{}".format(page_id), 
    json = data,
    headers={"Authorization": "Bearer " + token, "Notion-Version": "2021-05-13"},
)

Notion 的頁面可以看到「船」→ 「水上摩托車」,但是「水面」並沒有改動


3. 刪除 Database 內部資料

跟「修改」類似,只需要在 data 中傳送 ‘archived’: True,此 page 就被刪除了,不過 Notion 本身存在救回機制,若有保留 page_id,短時間內重新把 archived 設回 False 就可以復原被刪除的 page

data = {'archived': True}

page_id = "dd51028912d0407b85694d905a930a92" # "水上摩托車"
r = requests.patch(
    "https://api.notion.com/v1/pages/{}".format(page_id), 
    json = data,
    headers={"Authorization": "Bearer " + token, "Notion-Version": "2021-05-13"},
)
API 修改API 刪除API 新增NotionNotion APINotionAPIPythonPython Notion API
2 comments
0
FacebookTwitterPinterestEmail
previous post
【Notion API-1】,用 Python 自由操作 Notion
next post
有必要訓練台灣自己的大型模型嗎?

You may also like

技術範本專案: ...

2023-12-31

【網路其實不只是...

2023-12-28

【防彈筆記閱讀心...

2023-11-28

【Notion ...

2022-01-22

2 comments

Edward 2023-09-07 - 5:04 下午

請教一下,假設我把notion這個database的資料以dataframe格式呈現在python上,並對內容做了更新,要如何自動地把每個page_id的資料更新回notion呢?

Reply
Robin Kuo 2023-10-05 - 8:06 上午

如果要自動更新可以找看看排程的教學:window上可以查「工作排程」、Mac 或 linux 上可以查 crontab
用 dataframe 存的話你可以新增一欄 column 專門記錄有沒有修改,排成的程式就不用全部的 page_id 都更新,只更新有修改的即可

Reply

Leave a Comment Cancel Reply

Save my name, email, and website in this browser for the next time I comment.

關於 Robin Kuo

▍分享關於:閱讀、AI、筆記、生活中的小趣事
尋覓生活價值的逐夢者
雖然目前是個載浮載沉的一般上班族…
▍莫忘初衷,紀錄生活、分享為樂

近期文章

  • 【腦海中的那張圖片🖼️】

    2024-01-03
  • 技術範本專案: OSH 框架

    2023-12-31
  • 【網路其實不只是網頁? Ted Nelson在網路上的超文本】

    2023-12-28
  • 【Pika 是否能讓啾吉動起來?】

    2023-12-22
  • 【日更30達成!】#Day30

    2023-12-09

分類

  • AI 是什麼?
  • Android
  • Deep Learning
  • NLP
  • Notion 你的第二大腦
  • OTA 升級
  • 單車環島
  • 旅行足跡
  • 日更30 – 小金魚的人生實驗室
  • 未來規劃
  • 生活隨筆
  • 筆記雜學
  • 閱讀分享
Robin Kuo
  • AI 是什麼?
    • Deep Learning
    • Machine Learning
    • Reinforcement Learning
  • Android
    • Android 開機流程
    • OTA 升級
    • Partition
  • 筆記雜學
    • Notion 你的第二大腦
    • Life Operating System
    • 人生資料庫
  • 旅行足跡
    • 日本交換
    • 單車環島
    • 新竹一日遊s
  • 生活隨筆
    • 日更30 – 小金魚的人生實驗室
    • 未來規劃
    • 閱讀分享