如何通过Notion API基于页面模板创建数据库条目及批量导入数据?
用Notion API基于模板批量填充数据库的解决方案
Notion API目前没有直接支持“应用现有模板创建数据库条目”的官方接口,得通过先提取模板结构,再批量复用的方式实现,具体步骤如下:
1. 提取模板页面的完整块结构
先调用retrieve block children接口,把你现有模板页面的所有内容块(文本、表格、嵌入内容等)的JSON结构拉取下来,这就是后续复用的“模板原型”。
- 示例Python代码:
import requests NOTION_API_KEY = "你的API密钥" TEMPLATE_PAGE_ID = "你的模板页面ID" headers = { "Authorization": f"Bearer {NOTION_API_KEY}", "Notion-Version": "2022-06-28" # 采用最新稳定版本 } # 获取模板页面的所有子块,分页获取可处理超过100块的情况 resp = requests.get( f"https://api.notion.com/v1/blocks/{TEMPLATE_PAGE_ID}/children", headers=headers, params={"page_size": 100} ) template_blocks = resp.json()["results"]
把获取到的template_blocks保存好,这就是模板的完整内容结构。
2. 批量创建数据库条目并套用模板
针对每条要插入的记录,调用create page接口,同时把模板块作为新页面的子块传入,再设置数据库要求的属性字段值。
- 批量创建的示例代码:
TARGET_DATABASE_ID = "目标数据库ID" # 模拟要插入的数千条记录 records = [ {"title": "项目记录1", "状态": "进行中"}, {"title": "项目记录2", "状态": "已完成"}, # 更多记录... ] for item in records: # 构造请求体:设置数据库属性+套用模板块 payload = { "parent": {"database_id": TARGET_DATABASE_ID}, "properties": { # 对应你的数据库属性字段,按需调整 "名称": { "title": [{"text": {"content": item["title"]}}] }, "状态": { "select": {"name": item["状态"]} } }, "children": template_blocks # 直接复用模板的块结构 } resp = requests.post( "https://api.notion.com/v1/pages", headers=headers, json=payload ) # 处理请求结果:记录成功/失败状态、实现重试逻辑
3. 关键注意事项
- 速率限制处理:Notion API写操作的速率限制是每分钟最多3次请求,插入数千条记录必须做请求排队+重试机制,可以用
time.sleep()控制请求间隔,或者用队列库批量调度。 - 动态内容替换:如果模板里有占位文本(比如
{{项目名称}}),可以在批量创建前遍历template_blocks,把占位符替换成当前记录的实际内容。 - 块兼容性检查:确保模板中的所有块类型在数据库页面中都支持(比如某些高级嵌入块可能有特殊权限要求),提前在模板中测试调整。
内容的提问来源于stack exchange,提问作者Rhia
相关产品推荐
相关产品推荐

