如何通过Notion API向指定数据库添加页面而非创建新数据库?
解决Notion API向指定数据库添加页面的错误问题
问题说明
我希望通过Notion API向指定数据库中添加页面,但运行当前代码后,却在页面内创建了新的数据库。
运行脚本前效果

运行脚本后效果

期望效果

错误原因分析
- 接口URL错误:当前代码使用的
https://api.notion.com/v1/databases/是创建新数据库的接口,而向指定数据库添加页面需要调用创建页面的接口https://api.notion.com/v1/pages/ - Parent参数错误:向数据库添加页面时,
parent字段仅需指定database_id,不能同时传入page_id,否则会导致Notion误解为在指定页面下创建新数据库 - 字段格式错误:
Name的title字段格式不符合Notion API要求,需要是包含text对象的数组
修正后的代码
import json import requests def createPage(database_id, headers, url): newPageData = { "parent": { "database_id": database_id, }, "properties": { "Name": {"title": [{"text": {"content": "HI THERE"}}]}, }, } data = json.dumps(newPageData) res = requests.request("POST", url, headers=headers, data=data) print(res.status_code) print(res.text) database_id = "ea28de8e9cca4f62b4c4da3522869d03" url = "https://api.notion.com/v1/pages/" # 替换为创建页面的接口 key = "KEY" headers = { "Authorization": f"Bearer {key}", "accept": "application/json", "Notion-Version": "2021-05-11", "content-type": "application/json", } createPage(database_id, headers, url)
关键修改点
- 接口URL替换为创建页面的地址
/v1/pages/ - 删除
parent中的page_id参数,仅保留目标数据库的database_id - 修正
Name字段的格式,将title调整为包含text对象的数组结构
内容的提问来源于stack exchange,提问作者Hashem A. Damrah
相关产品推荐
相关产品推荐

