# 飞书文档创建失败的正确解决
问题描述
使用 iFlow AI 调用飞书 API 创建文档时,文档创建成功,但写入内容时报错:`block not support to create`
犯过的错误
- **误判权限问题** - 一开始以为是没有添加 docx:document:write_only 权限
- **直接调用 REST API** - 尝试用原生 HTTP 请求调用飞书 API,结构不正确
- **忽略 SDK** - 没有使用官方 lark-oapi Python SDK
根本原因
AI 在动态生成代码时,直接调用 REST API 的结构不符合飞书文档 API 的要求。写入文档内容需要使用 lark-oapi SDK 构建正确的请求对象。
解决方法
使用 lark-oapi SDK 正确写入文档内容:
```python
import lark_oapi as lark
from lark_oapi.api.docx.v1 import (
CreateDocumentBlockChildrenRequest,
CreateDocumentBlockChildrenRequestBuilder,
CreateDocumentBlockChildrenRequestBodyBuilder
)
初始化客户端
client = lark.Client.builder() \
.app_id(“你的APP_ID”) \
.app_secret(“你的APP_SECRET”) \
.build()
构建文本块
text_block = {
“block_type”: 2,
“text”: {
“elements”: [{
“text_run”: {
“content”: “这里是你要写入的内容”,
“text_element_style”: {}
}
}]
}
}
写入文档
request = CreateDocumentBlockChildrenRequest.builder() \
.document_id(“文档ID”) \
.block_id(“文档ID”) \
.request_body(
CreateDocumentBlockChildrenRequestBuilder()
.children([text_block])
.index(-1)
.build()
) \
.build()
response = client.docx.v1.document_block_children.create(request)
```
关键点
- 创建文档和写入内容是两个独立的 API
- 写入内容需要使用 `document_block_children.create`
- 必须使用 lark-oapi SDK,不能直接用 REST API
- block_id 需要使用文档 ID