如何使用Notion SDK或API修改现有块的block type类型?
解决方案
报错核心原因
Notion API 本身不支持直接调用块更新接口修改已有块的类型,接口会自动校验请求体传入的块类型与原块现有类型是否匹配,不匹配就会抛出你遇到的类型校验错误。
可落地实现步骤
- 第一步:调用块查询接口获取原有
paragraph块的全部文本内容、富文本样式、子块(如果有)等信息 - 第二步:在原有块的相同位置新建你需要的目标类型块(比如
heading_2),把上一步拿到的内容完整填充到新块中 - 第三步:删除原来的
paragraph块即可实现类型转换的效果
参考代码示例(Node.js 环境)
// 1. 拉取原有段落块的内容 const oldBlock = await notion.blocks.retrieve({ block_id: 你的旧块ID }); const paragraphText = oldBlock.paragraph.rich_text; // 2. 在旧块紧后方插入新的二级标题块 await notion.blocks.children.append({ block_id: 父页面/父块ID, children: [ { type: "heading_2", heading_2: { rich_text: paragraphText } } ], after: 你的旧块ID // 保证新块位置和原块完全一致 }); // 3. 删除旧的段落块 await notion.blocks.delete({ block_id: 你的旧块ID });
注意事项
- 如果原有块存在嵌套子块,需要先把所有子块内容提取出来,插入到新块下方后再删除原块
- 数据库、嵌入块等特殊块的内容结构和普通文本块不同,提取内容时需要对应适配字段结构
内容的提问来源于stack exchange,提问作者nirinsanity
相关产品推荐
相关产品推荐

