返回顶部
f

feishu-bitable-attachment飞书附件上传

uploads files from local/url/feishu-message to any accessible feishu bitable attachment field via material upload flow (parent_type=bitable_file)

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
88
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

feishu-bitable-attachment

概述

该技能通过素材上传流程将文件上传至飞书多维表格附件字段:

  1. 1. 获取源文件(本地副本、URL下载或飞书消息下载)
  2. 通过 parenttype=bitablefile 上传至多维表格上传端点
  3. 从上传响应中获取 file_token
  4. 创建/更新包含附件字段的记录

核心设计:这是一个适用于您的应用可访问的任何多维表格通用技能,无任何硬编码内容。

验证状态

本地测试通过

  • - [x] 所有Python模块通过语法检查(py_compile)
  • [x] 所有自定义异常类已正确导入
  • [x] 文件未找到时抛出 SkillFileNotFoundError(而非NameError)
  • [x] 缺少参数时输入验证抛出 SkillInputError
  • [x] 所有负载示例文件均为有效JSON
  • [x] main.py --help 运行成功

需真实环境验证

  • - [ ] 多维表格记录更新/创建响应格式
  • [ ] 表格/字段列表API响应结构
  • [ ] 记录搜索API筛选语法

若您的环境中任何API调用失败,请查看 references/feishu-api-notes.md 了解扩展点。

支持的源类型

类型描述示例
local本地文件路径{type: local, ref: /tmp/file.pdf}
url
从HTTP(S) URL下载 | {type: url, ref: https://example.com/file.pdf} | | feishumessage | 飞书消息附件 | {type: feishumessage, ref: {filekey: filexxx}} |

目标解析

该技能支持灵活的目标指定,可适用于任何多维表格:

表格指定(优先级:tableid > tablename)

  • - 直接提供 tableid 实现最快解析
  • 或提供 tablename 实现自动查找(列出所有表格并按名称匹配)

字段指定(优先级:fieldid > fieldname)

  • - 直接提供 fieldid 实现最快解析
  • 或提供 fieldname 实现自动查找(列出所有字段并按名称匹配)

记录指定

  • - 提供 record_id 更新现有记录
  • 或提供 lookup 按字段值搜索记录
  • 或两者均省略以创建新记录

输入JSON结构

json
{
target: {
app_token: bascxxxxxxxxxxxxx,
table_id: tblxxxxxxxxxx,
table_name: ,
record_id: recxxxxxxxxxx,
field_id: fldxxxxxxxxxx,
field_name: 附件,
lookup: {
field_name: 合同编号,
field_id: ,
value: HT-2026-001
},
allowcreateiflookupmissing: false
},
source: {
type: local,
ref: /path/to/file.pdf
},
append: true
}

目标参数

参数必需描述
apptoken多维表格apptoken(basc...)
tableid
| 表格ID(tbl...)。未提供tablename时必需 | | tablename | 否 | 表格显示名称。未提供tableid时必需 | | record_id | 否 | 记录ID(rec...)。留空则创建新记录 | | fieldid | 否 | 字段ID。未提供fieldname时必需 | | fieldname | 否 | 字段显示名称。未提供fieldid时必需 | | lookup | 否 | 通过搜索查找record_id的配置 | | allowcreateiflookupmissing | 否 | 若为true,查找无结果时创建新记录 |

查找配置

json
lookup: {
field_name: 合同编号,
field_id: ,
value: HT-2026-001
}

源参数

参数必需描述
type可选值:local、url、feishumessage
ref
是 | local:文件路径 / url:下载URL / feishumessage:{file_key, filename} |

追加模式

行为
true读取现有附件,将新文件追加到列表中
false
仅用新文件替换附件字段 |

上传流程

小文件(≤20MB)

直接上传至素材端点:

POST /open-apis/drive/v1/upload
multipart/form-data 字段:
- file:<文件内容>
- file_name:文件名
- size:文件大小(字节)
- parenttype:bitablefile
- parentnode:{apptoken}
- extra:{driveroutetoken: {app_token}}

大文件(>20MB)

以5MB分片上传:
  1. 1. POST /open-apis/drive/v1/chunkedupload/prepare → uploadid
  2. POST /open-apis/drive/v1/chunkedupload(每分片)→ etag
  3. POST /open-apis/drive/v1/chunkedupload/finish → file_token

环境变量

运行前设置:

bash
export FEISHUAPPID=yourappid
export FEISHUAPPSECRET=yourappsecret
export FEISHUBASEURL=https://open.feishu.cn # 可选

使用示例

已知record_id的本地文件

bash python scripts/main.py --input payload.local.json

URL下载替换模式

bash python scripts/main.py --input payload.url.json

飞书消息附件

bash python scripts/main.py --input payload.feishu_message.json

按名称自动解析表格

bash python scripts/main.py --input payload.table_name.json

按字段值查找记录

bash python scripts/main.py --input payload.lookup.json

创建带附件的新记录

bash python scripts/main.py --input payload.create_record.json

基础验证

使用前运行语法检查:

bash
python -m py_compile scripts/*.py

此操作验证:

  • - 所有Python模块语法有效
  • 无未定义的变量或导入

输出

成功

json { ok: true, file_token: vobxxxxxxxxxx, app_token: bascxxxxxxxxxx, table_id: tblxxxxxxxxxx, table_name: 合同归档, record_id: recxxxxxxxxxx, field_name: 附件, field_id: fldxxxxxxxxxx, upload_type: direct, attachment_count: 3, mode: append, message: Successfully uploaded report.pdf... }

错误

json { ok: false, error: Table xxx not found. Available tables: 表 1, 表 2, errortype: resolveerror }

常见错误

错误类型原因解决方案
filenotfound本地文件不存在检查文件路径
download_failed
URL下载失败 | 验证URL可访问性 | | input_error | 参数无效 | 检查输入JSON结构 | | autherror | 凭据无效 | 检查FEISHUAPP_ID/SECRET | | upload_error | 上传失败 | 检查应用权限 | | resolve_error | 表格/字段/记录未找到 | 验证名称或ID | | update_error | 记录更新失败 | 检查记录是否存在 |

为何该技能适用于任何多维表格

该技能未硬编码到特定多维表格:

  1. 1. 动态apptoken:从输入读取,非硬编码
  2. 动态表格解析:支持tableid(直接)或tablename(API查找)
  3. 动态字段解析:支持fieldid(直接)或fieldname(API查找)
  4. 动态记录解析:支持recordid、查找搜索或创建新模式

参考资料

参见 references/feishu-api-notes.md 了解:

  • - 为何IM/Drive的filetoken不能直接复用
  • 为何需要上传至bitablefile上传点
  • API实现说明和扩展点

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 feishu-bitable-attachment-1775989322 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 feishu-bitable-attachment-1775989322 技能

通过命令行安装

skillhub install feishu-bitable-attachment-1775989322

下载

⬇ 下载 feishu-bitable-attachment v1.0.0(免费)

文件大小: 28.92 KB | 发布时间: 2026-4-13 10:16

v1.0.0 最新 2026-4-13 10:16
Initial release of feishu-bitable-attachment skill:

- Uploads files from local disk, URL, or Feishu message to any Feishu Bitable attachment field using material upload flow.
- Supports flexible target resolution: app_token, table_id/table_name, field_id/field_name, record_id/lookup/create-new.
- Input validation, detailed structure, and error handling (with friendly error messages for resolution, auth, upload errors, and more).
- Handles both direct and chunked upload flows depending on file size.
- Works with any accessible Bitable—no hardcoded table or field values.
- Usage examples, output formats, and environment setup instructions included.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部