如何通过Notion API获取页面内的Database ID?
解决Notion页面内数据库ID的获取问题
方法1:遍历页面内容提取数据库ID
你可以调用Notion的Retrieve a page接口获取目标页面的完整内容,页面返回的children数组包含了页面内所有对象,其中类型为database的条目就是目标数据库,对应的id字段即为所需的Database ID。
具体操作步骤:
- 调用
GET /v1/pages/{page_id}接口,传入已知的页面ID(页面ID可从页面URL末尾的32位字符串提取) - 遍历返回结果中的
children数组,筛选type为database的对象 - 提取该对象的
id字段,得到对应数据库ID
示例代码(Python):
import requests NOTION_API_KEY = "你的API密钥" PAGE_ID = "目标页面ID" headers = { "Authorization": f"Bearer {NOTION_API_KEY}", "Notion-Version": "2022-06-28" } response = requests.get(f"https://api.notion.com/v1/pages/{PAGE_ID}", headers=headers) page_data = response.json() # 遍历子对象查找数据库 for child in page_data["children"]: if child["type"] == "database": database_id = child["database"]["id"] print(f"找到数据库ID:{database_id}")
方法2:通过搜索API批量定位数据库
如果页面和数据库有统一命名规则或标签,可使用Notion的Search接口(POST /v1/search),通过关键词、过滤条件(如指定对象类型为database)批量定位目标数据库ID。
示例过滤参数:
{ "query": "数据库名称关键词", "filter": { "value": "database", "property": "object" }, "sort": { "direction": "descending", "timestamp": "last_edited_time" } }
注意事项
- 确保API密钥拥有
read权限(用于获取页面内容)和write权限(用于填充数据库) - 保持Notion API版本一致,建议使用最新稳定版(如
2022-06-28) - 若页面内存在多个数据库,可通过
title字段进一步区分目标数据库
内容的提问来源于stack exchange,提问作者Xenos
相关产品推荐
相关产品推荐

