最近在整理一些以 Notion 為主的觀影記錄,想要自動化處理資料,例如:
- 自動取得所有紀錄
- 做一些統計或轉為 CSV
- 日後串接 AI 做描述生成或影片推薦
但 Notion 的網頁操作不適合大量處理資料,我決定用熟悉的 Google Apps Script 來串接 Notion API,從資料庫中讀取所有項目,並作為自動化腳本的起點。
專案簡介:GAS + Notion API 快速串接
📌 使用技術:
- Google Apps Script(純雲端、免架設)
- Notion API(官方 REST API)
- 串接方式:UrlFetchApp 搭配 HTTP POST 請求
🚀 實作步驟
① 建立 Notion Integration
- 前往 Notion 開發者後台: https://www.notion.com/my-integrations
- 建立一個 Integration 並複製你的 Internal Integration Token
② 讓資料庫連接該 Integration
- 開啟你要存取的 Database 頁面
- 點右上「Share(分享)」
- 選擇「Connect to Integration」,把剛剛建立的 Integration 加進來 ✅
- 確保權限為「Can edit」或「Can read」
📌 這步驟一定要做,不然會遇到 404 object_not_found 錯誤。
③ 從 Notion 網址取得 Database ID
假設網址如下:
https://www.notion.so/8288d5771f2b4e06abce3689b96?v=2464feba5dd54f6ea84b1f243b29673b
那麼 Database ID 為:
8288d577-1f2b-4e06-abce-3689b96
記得加上 -
,Notion API 需要的是完整 UUID 格式。
④ Google Apps Script 程式:批次讀取全部資料
function fetchAllPages() {
var NOTION_API_KEY = "你的 Integration Token";
var databaseId = "8288d577-1f2b-4e06-abce-3689b96";
var headers = {
"Authorization": "Bearer " + NOTION_API_KEY,
"Notion-Version": "2022-06-28",
"Content-Type": "application/json"
};
var url = "https://api.notion.com/v1/databases/" + databaseId + "/query";
var hasMore = true;
var nextCursor = null;
while (hasMore) {
var payload = nextCursor ? JSON.stringify({ start_cursor: nextCursor }) : "{}";
var options = {
method: "post",
headers: headers,
payload: payload,
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(url, options);
var data = JSON.parse(response.getContentText());
data.results.forEach(function(page) {
var title = page.properties["Name"].title[0]?.text?.content || "無標題";
Logger.log("頁面標題:" + title);
});
hasMore = data.has_more;
nextCursor = data.next_cursor;
}
}
✅ 支援分頁(pagination),一次抓完所有資料庫內容 ✅ 你可以進一步把這些資料轉為表格、儲存至 Google Sheet,甚至串接 AI 做後續應用
🛠 後續可做的延伸應用
- 匯出為 CSV 或 JSON 備份觀影紀錄
- 用 Gemini 或 GPT 自動生成描述或評論
- 與 LINE Bot 串接,查詢 Notion 資料庫內容
📌 技術補充:常見錯誤與解法
錯誤訊息 解決方式 404 object_not_found 沒有分享 Database 給 Integration,請重新「Connect」 無法取得資料 檢查 Token 是否過期或拼錯 資料超過 100 筆只抓一部份 需使用 has_more + start_cursor 分頁處理
🗂 我的使用場景
目前我用這方式讀取包含評分、觀影日期、主角、類型的資料庫,用來整理日後的 AI 電影資料庫。這邊每筆紀錄的 title 為檔名格式,例如 20250422海洋奇緣2(美)
,GAS 可自動擷取標題與日期欄位,方便整理。
如果你也想試試:
你可以複製這段程式直接在 Apps Script 使用,Notion 的資料結構也很好擴充。若你有其他格式的欄位(checkbox、multi-select、relation 等),歡迎留言我可以幫你補上範例。
📬 喜歡這類 Notion 技術實作的應用嗎?歡迎按愛心或留言交流!
需要我幫你直接生成 Markdown / DOCX / 方格子匯入格式嗎?還是要加上封面圖與文章內部圖片?可以直接幫你整理一份完整發佈版。