Python如何透過Notion API讀取Table資料

這篇記錄一下 Python要如何透過 Notion API 讀取Table中的相關資料。

簡單來說有三個步驟:

  1. 申請Notion API的 integration,取得 Secret Key
  2. 開啟表格的讀取權限
  3. 透過HTTP來取得資料

 

步驟1 – 申請取得 Secret Key

進入 Notion Developer 的「My Integrations」頁面

# 進入 Notion Developer 的「My Integrations」頁面,點選「Create new integration」。

完成Integration的相關設定

# 完成 Integration 的相關設定

進入 Integration 複製 Secret Key

# 進入 Integration 複製 Secret Key

 

步驟2 – 開啟Table的讀取權限

在 Table 頁面上,點選右上方的「Share」,選擇將這個Table頁面的操作權限分享給誰。

# 在 Table 頁面上,點選右上方的「Share」,選擇將這個Table頁面的操作權限分享給誰。

選擇要賦予權限的對象

# 選擇要賦予權限的對象,就可以完成分享。

確認Notion Table已經分享給指定對象

# 如果想要再次確認上面的動作是否有完成,可以再次點到右上方的「Share」。這次出現了剛才指定的分享對象,同時右側顯示這個對象對這個Table有「edit」的權限。

這個分享的步驟記得要完成,否則如果步驟一取得Secret Key後,直接寫程式存取,而沒有先分享該Table的權限,這時會收到 404 的HTTP Status Code

步驟3 – 透過HTTP存取Table

以下為簡單的 Python 範例程式,直接複製即可。

import requests

database_id = XXXXX
authenticator = XXXXX
header_payload = {
    'Authorization': authenticator,
    'Content-Type': 'application/json',
    'Notion-Version': '2021-05-13'
}

url = 'https://api.notion.com/v1/databases/' + database_id + '/query'
response = requests.request('POST', url, headers=header_payload)
data = response .json()
print(data)

# 簡單的 Table 資料讀取,可以透過以上的方式來達到。

完整的page或是Table相關存取,可參考官方網站的「Developers Reference」,其中有十分詳細的說明,是開發時的好幫手。

接著,再來的議題就是要如何解析這個以JSON描述的資料。