iflow-bot飞书文档创建失败的正确解决方法

# 飞书文档创建失败的正确解决

问题描述

使用 iFlow AI 调用飞书 API 创建文档时,文档创建成功,但写入内容时报错:`block not support to create`

犯过的错误

  1. **误判权限问题** - 一开始以为是没有添加 docx:document:write_only 权限
  2. **直接调用 REST API** - 尝试用原生 HTTP 请求调用飞书 API,结构不正确
  3. **忽略 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

有个skill实现了,链接如下
:page_facing_up: Feishu Doc Manager | 飞书文档管理器 — ClawHub
skill安全性请自行验证