feishu-bitable
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFeishu Bitable (多维表格) SKILL
Feishu Bitable SKILL
🚨 执行前必读
🚨 Pre-execution Notes
- ✅ 创建数据表:支持两种模式 — ① 明确需求时,在 时通过
create一次性定义字段(减少 API 调用);② 探索式场景时,使用默认表 + 逐步修改字段(更稳定,易调整)table.fields - ⚠️ 默认表的空行坑:自带的默认表中会有空记录(空行)!插入数据前建议先调用
app.create+feishu_bitable_app_table_record.list删除空行,避免数据污染batch_delete - ✅ 写记录前:先调用 获取字段 type/ui_type
feishu_bitable_app_table_field.list - ✅ 人员字段:默认 open_id(ou_...),值必须是 (数组对象)
[{id:"ou_xxx"}] - ✅ 日期字段:毫秒时间戳(例如 ),不是秒
1674206443000 - ✅ 单选字段:字符串(例如 ),不是数组
"选项1" - ✅ 多选字段:字符串数组(例如 )
["选项1", "选项2"] - ✅ 附件字段:必须先上传到当前多维表格,使用返回的 file_token
- ✅ 批量上限:单次 ≤ 500 条,超过需分批(批量操作是原子性的)
- ✅ 并发限制:同一数据表不支持并发写,需串行调用 + 延迟 0.5-1 秒
- ✅ Create Data Table: Supports two modes — ① When requirements are clear, define all fields at once via during
table.fields(reduces API calls); ② For exploratory scenarios, use the default table + modify fields gradually (more stable and adjustable)create - ⚠️ Empty Rows in Default Table: The default table created by contains empty records (empty rows)! It is recommended to call
app.create+feishu_bitable_app_table_record.listto remove empty rows before inserting data to avoid data contaminationbatch_delete - ✅ Before Writing Records: First call to get field type/ui_type
feishu_bitable_app_table_field.list - ✅ User Field: Defaults to open_id (ou_...), value must be (array of objects)
[{id:"ou_xxx"}] - ✅ Date Field: Millisecond timestamp (e.g., ), not seconds
1674206443000 - ✅ Single Select Field: String (e.g., ), not an array
"Option 1" - ✅ Multi Select Field: Array of strings (e.g., )
["Option 1", "Option 2"] - ✅ Attachment Field: Must first upload to the current Bitable, use the returned file_token
- ✅ Batch Limit: ≤500 records per call, split into batches if exceeding (batch operations are atomic)
- ✅ Concurrency Limit: Concurrent writes are not supported for the same data table, use serial calls + 0.5-1 second delay
📋 快速索引:意图 → 工具 → 必填参数
📋 Quick Index: Intent → Tool → Required Parameters
| 用户意图 | 工具 | action | 必填参数 | 常用可选 |
|---|---|---|---|---|
| 查表有哪些字段 | feishu_bitable_app_table_field | list | app_token, table_id | - |
| 查记录 | feishu_bitable_app_table_record | list | app_token, table_id | filter, sort, field_names |
| 新增一行 | feishu_bitable_app_table_record | create | app_token, table_id, fields | - |
| 批量导入 | feishu_bitable_app_table_record | batch_create | app_token, table_id, records (≤500) | - |
| 更新一行 | feishu_bitable_app_table_record | update | app_token, table_id, record_id, fields | - |
| 批量更新 | feishu_bitable_app_table_record | batch_update | app_token, table_id, records (≤500) | - |
| 创建多维表格 | feishu_bitable_app | create | name | folder_token |
| 创建数据表 | feishu_bitable_app_table | create | app_token, name | fields |
| 创建字段 | feishu_bitable_app_table_field | create | app_token, table_id, field_name, type | property |
| 创建视图 | feishu_bitable_app_table_view | create | app_token, table_id, view_name, view_type | - |
| User Intent | Tool | action | Required Parameters | Common Optional |
|---|---|---|---|---|
| Check table fields | feishu_bitable_app_table_field | list | app_token, table_id | - |
| Query records | feishu_bitable_app_table_record | list | app_token, table_id | filter, sort, field_names |
| Add a row | feishu_bitable_app_table_record | create | app_token, table_id, fields | - |
| Batch import | feishu_bitable_app_table_record | batch_create | app_token, table_id, records (≤500) | - |
| Update a row | feishu_bitable_app_table_record | update | app_token, table_id, record_id, fields | - |
| Batch update | feishu_bitable_app_table_record | batch_update | app_token, table_id, records (≤500) | - |
| Create Bitable | feishu_bitable_app | create | name | folder_token |
| Create data table | feishu_bitable_app_table | create | app_token, name | fields |
| Create field | feishu_bitable_app_table_field | create | app_token, table_id, field_name, type | property |
| Create view | feishu_bitable_app_table_view | create | app_token, table_id, view_name, view_type | - |
🎯 核心约束(Schema 未透露的知识)
🎯 Core Constraints (Undisclosed Schema Knowledge)
📚 详细参考文档
📚 Detailed Reference Documents
当遇到字段配置、记录值格式问题或需要完整示例时,查阅以下文档:
- 字段 Property 配置详解 - 每种字段类型创建/更新时需要的 参数结构(单选的 options、进度的 min/max、关联的 table_id 等)
property - 记录值数据结构详解 - 每种字段类型在记录中对应的 值格式(人员字段只传 id、日期是毫秒时间戳、附件需先上传等)
fields - 使用场景完整示例 - 8 个完整场景示例(创建表模式对比、批量导入、筛选查询、附件处理、关联字段等)
何时查阅:
- 创建/更新字段时收到 错误码(property 结构错误)→ 查 field-properties.md
125408X - 写入记录时收到 错误码(字段值转换失败)→ 查 record-values.md
125406X - 需要完整的操作流程和参数示例 → 查 examples.md
When encountering field configuration, record value format issues or needing complete examples, refer to the following documents:
- Field Property Configuration Details - parameter structure required for creating/updating each field type (options for single select, min/max for progress, associated table_id, etc.)
property - Record Value Data Structure Details - value format corresponding to each field type in records (only pass id for user fields, date is millisecond timestamp, attachments need pre-upload, etc.)
fields - Complete Usage Scenario Examples - 8 complete scenario examples (comparison of table creation modes, batch import, filtered query, attachment processing, associated fields, etc.)
When to Refer:
- Received error code when creating/updating fields (incorrect property structure) → Check field-properties.md
125408X - Received error code when writing records (field value conversion failed) → Check record-values.md
125406X - Need complete operation flows and parameter examples → Check examples.md
1. 字段类型与值格式必须严格匹配
1. Field Type and Value Format Must Strictly Match
Bitable 最大的坑:不同字段类型对 value 的数据结构要求完全不同。
Bitable's Biggest Pitfall: Different field types have completely different requirements for value data structures.
最易错的字段类型(完整列表见 record-values.md)
Most Error-Prone Field Types (Full list in record-values.md)
| type | ui_type | 字段类型 | 正确格式 | ❌ 常见错误 |
|---|---|---|---|---|
| 11 | User | 人员 | | 传字符串 |
| 5 | DateTime | 日期 | | 传秒时间戳或字符串 |
| 3 | SingleSelect | 单选 | | 传数组 |
| 4 | MultiSelect | 多选 | | 传字符串 |
| 15 | Url | 超链接 | | 只传字符串 URL |
| 17 | Attachment | 附件 | | 传外部 URL 或本地路径 |
强制流程:
- 先调用 获取字段的
feishu_bitable_app_table_field.list和typeui_type - 根据上表或 record-values.md 构造正确格式
- 错误码 或
125406X→ 检查字段值格式1254015
人员字段特别注意:
- 默认使用 open_id(ou_...),与 calendar/task 一致
- 格式:(数组对象)
[{id: "ou_xxx"}] - 只能传 id 字段,不能传 name/email 等
| type | ui_type | Field Type | Correct Format | ❌ Common Mistakes |
|---|---|---|---|---|
| 11 | User | User | | Pass string |
| 5 | DateTime | Date | | Pass second-level timestamp or string |
| 3 | SingleSelect | Single Select | | Pass array |
| 4 | MultiSelect | Multi Select | | Pass string |
| 15 | Url | Hyperlink | | Pass only string URL |
| 17 | Attachment | Attachment | | Pass external URL or local path |
Mandatory Process:
- First call to get field
feishu_bitable_app_table_field.listandtypeui_type - Construct the correct format based on the above table or record-values.md
- Error code or
125406X→ Check field value format1254015
Special Note for User Field:
- Defaults to open_id (ou_...), consistent with calendar/task
- Format: (array of objects)
[{id: "ou_xxx"}] - Only pass the id field, do not pass name/email, etc.
📌 核心使用场景
📌 Core Usage Scenarios
完整示例: 查阅 examples.md 了解更多场景(创建表模式对比、空行处理、附件上传、关联字段等)
Complete Examples: Check examples.md for more scenarios (comparison of table creation modes, empty row processing, attachment upload, associated fields, etc.)
场景 1: 查字段类型(必做第一步)
Scenario 1: Query Field Types (Mandatory First Step)
json
{
"action": "list",
"app_token": "S404b...",
"table_id": "tbl..."
}返回:包含每个字段的 、、、、
field_idfield_nametypeui_typepropertyjson
{
"action": "list",
"app_token": "S404b...",
"table_id": "tbl..."
}Return: Includes , , , , for each field
field_idfield_nametypeui_typeproperty场景 2: 批量导入客户数据
Scenario 2: Batch Import Customer Data
json
{
"action": "batch_create",
"app_token": "S404b...",
"table_id": "tbl...",
"records": [
{
"fields": {
"客户名称": "Bytedance",
"负责人": [{"id": "ou_xxx"}],
"签约日期": 1674206443000,
"状态": "进行中"
}
},
{
"fields": {
"客户名称": "飞书",
"负责人": [{"id": "ou_yyy"}],
"签约日期": 1675416243000,
"状态": "已完成"
}
}
]
}字段值格式:
- 人员:(数组对象)
[{id: "ou_xxx"}] - 日期:毫秒时间戳
- 单选:字符串
- 多选:字符串数组
限制: 最多 500 条记录
json
{
"action": "batch_create",
"app_token": "S404b...",
"table_id": "tbl...",
"records": [
{
"fields": {
"Customer Name": "Bytedance",
"Responsible Person": [{"id": "ou_xxx"}],
"Signing Date": 1674206443000,
"Status": "In Progress"
}
},
{
"fields": {
"Customer Name": "Feishu",
"Responsible Person": [{"id": "ou_yyy"}],
"Signing Date": 1675416243000,
"Status": "Completed"
}
}
]
}Field Value Format:
- User: (array of objects)
[{id: "ou_xxx"}] - Date: Millisecond timestamp
- Single Select: String
- Multi Select: Array of strings
Limit: Maximum 500 records
场景 3: 筛选查询(高级筛选)
Scenario 3: Filtered Query (Advanced Filter)
json
{
"action": "list",
"app_token": "S404b...",
"table_id": "tbl...",
"filter": {
"conjunction": "and",
"conditions": [
{
"field_name": "状态",
"operator": "is",
"value": ["进行中"]
},
{
"field_name": "截止日期",
"operator": "isLess",
"value": ["ExactDate", "1740441600000"]
}
]
},
"sort": [
{
"field_name": "截止日期",
"desc": false
}
]
}filter 说明:
- 支持 10 种 operator(is/isNot/contains/isEmpty 等,见附录 C)
- ⚠️ isEmpty/isNotEmpty 必须传 (虽然逻辑上不需要值,但 API 要求必须传空数组)
value: [] - 日期筛选可使用 、
["Today"]等["ExactDate", "时间戳"] - 可指定多个排序字段
sort
json
{
"action": "list",
"app_token": "S404b...",
"table_id": "tbl...",
"filter": {
"conjunction": "and",
"conditions": [
{
"field_name": "Status",
"operator": "is",
"value": ["In Progress"]
},
{
"field_name": "Deadline",
"operator": "isLess",
"value": ["ExactDate", "1740441600000"]
}
]
},
"sort": [
{
"field_name": "Deadline",
"desc": false
}
]
}filter Description:
- Supports 10 operators (is/isNot/contains/isEmpty, etc., see Appendix C)
- ⚠️ isEmpty/isNotEmpty must pass (logically no value is needed, but API requires empty array)
value: [] - Date filtering can use ,
["Today"], etc.["ExactDate", "timestamp"] - can specify multiple sorting fields
sort
🔍 常见错误与排查
🔍 Common Errors and Troubleshooting
| 错误码 | 错误现象 | 根本原因 | 解决方案 |
|---|---|---|---|
| 1254064 | DatetimeFieldConvFail | 日期字段格式错误 | 必须用毫秒时间戳(如 |
| 1254068 | URLFieldConvFail | 超链接字段格式错误 | 必须用对象 |
| 1254066 | UserFieldConvFail | 人员字段格式错误或 ID 类型不匹配 | 必须传 |
| 1254015 | Field types do not match | 字段值格式与类型不匹配 | 先 list 字段,按类型构造正确格式 |
| 1254104 | RecordAddOnceExceedLimit | 批量创建超过 500 条 | 分批调用,每批 ≤ 500 |
| 1254291 | Write conflict | 并发写冲突 | 串行调用 + 延迟 0.5-1 秒 |
| 1254303 | AttachPermNotAllow | 附件未上传到当前表格 | 先调用上传素材接口 |
| 1254045 | FieldNameNotFound | 字段名不存在 | 检查字段名(包括空格、大小写) |
| Error Code | Symptom | Root Cause | Solution |
|---|---|---|---|
| 1254064 | DatetimeFieldConvFail | Incorrect date field format | Must use millisecond timestamp (e.g., |
| 1254068 | URLFieldConvFail | Incorrect hyperlink field format | Must use object |
| 1254066 | UserFieldConvFail | Incorrect user field format or mismatched ID type | Must pass |
| 1254015 | Field types do not match | Field value format does not match type | First list fields, then construct correct format by type |
| 1254104 | RecordAddOnceExceedLimit | Batch creation exceeds 500 records | Call in batches, ≤500 records per batch |
| 1254291 | Write conflict | Concurrent write conflict | Use serial calls + 0.5-1 second delay |
| 1254303 | AttachPermNotAllow | Attachment not uploaded to current table | First call the material upload interface |
| 1254045 | FieldNameNotFound | Field name does not exist | Check field name (including spaces, case sensitivity) |
📚 附录:背景知识
📚 Appendix: Background Knowledge
A. 资源层级关系
A. Resource Hierarchy
App (多维表格应用)
├── Table (数据表) ×100
│ ├── Record (记录/行) ×20,000
│ ├── Field (字段/列) ×300
│ └── View (视图) ×200
└── Dashboard (仪表盘)App (Bitable App)
├── Table (Data Table) ×100
│ ├── Record (Row) ×20,000
│ ├── Field (Column) ×300
│ └── View ×200
└── DashboardB. 筛选条件 operator 列表
B. Filter Operator List
| operator | 含义 | 支持字段 | value 要求 |
|---|---|---|---|
| 等于 | 所有 | 单个值 |
| 不等于 | 除日期外 | 单个值 |
| 包含 | 除日期外 | 可多个值 |
| 不包含 | 除日期外 | 可多个值 |
| 为空 | 所有 | 必须为 |
| 不为空 | 所有 | 必须为 |
| 大于 | 数字、日期 | 单个值 |
| 大于等于 | 数字(不支持日期) | 单个值 |
| 小于 | 数字、日期 | 单个值 |
| 小于等于 | 数字(不支持日期) | 单个值 |
日期字段特殊值: , , 等(完整列表见 examples.md)
["Today"]["Tomorrow"]["ExactDate", "时间戳"]| operator | Meaning | Supported Fields | Value Requirement |
|---|---|---|---|
| Equals | All | Single value |
| Not Equals | All except date | Single value |
| Contains | All except date | Multiple values allowed |
| Does Not Contain | All except date | Multiple values allowed |
| Is Empty | All | Must be |
| Is Not Empty | All | Must be |
| Greater Than | Number, Date | Single value |
| Greater Than or Equal | Number (not supported for date) | Single value |
| Less Than | Number, Date | Single value |
| Less Than or Equal | Number (not supported for date) | Single value |
Special Values for Date Field: , , , etc. (full list in examples.md)
["Today"]["Tomorrow"]["ExactDate", "timestamp"]C. 使用限制
C. Usage Limits
| 限制项 | 上限 |
|---|---|
| 数据表 + 仪表盘 | 100(单个 App) |
| 记录数 | 20,000(单个数据表) |
| 字段数 | 300(单个数据表) |
| 视图数 | 200(单个数据表) |
| 批量创建/更新/删除 | 500(单次 API 调用) |
| 单元格文本 | 10 万字符 |
| 单选/多选选项 | 20,000(单个字段) |
| 单元格附件 | 100 |
| 单元格人员 | 1,000 |
| Limit Item | Upper Limit |
|---|---|
| Data Tables + Dashboards | 100 (per App) |
| Number of Records | 20,000 (per Data Table) |
| Number of Fields | 300 (per Data Table) |
| Number of Views | 200 (per Data Table) |
| Batch Create/Update/Delete | 500 (per API call) |
| Cell Text | 100,000 characters |
| Single Select/Multi Select Options | 20,000 (per field) |
| Cell Attachments | 100 |
| Cell Users | 1,000 |
D. 其他约束
D. Other Constraints
- 从其他数据源同步的数据表,不支持增删改记录
- 公式字段、查看引用字段是只读的
- 删除操作无法恢复
- 视图筛选条件使用 ,需先调用 field.list 获取
field_id
- Data tables synchronized from other data sources do not support adding/deleting/modifying records
- Formula fields, view reference fields are read-only
- Delete operations cannot be recovered
- View filter conditions use , need to call field.list first to get it
field_id