cc-lark 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +47 -0
- package/.github/workflows/release.yml +47 -0
- package/.github/workflows/sync-upstream.yml +127 -0
- package/.prettierrc.json +7 -0
- package/README.md +214 -0
- package/dist/core/api-error.d.ts +193 -0
- package/dist/core/api-error.d.ts.map +1 -0
- package/dist/core/api-error.js +263 -0
- package/dist/core/api-error.js.map +1 -0
- package/dist/core/auth-errors.d.ts +13 -0
- package/dist/core/auth-errors.d.ts.map +1 -0
- package/dist/core/auth-errors.js +14 -0
- package/dist/core/auth-errors.js.map +1 -0
- package/dist/core/config.d.ts +60 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +115 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/device-flow.d.ts +80 -0
- package/dist/core/device-flow.d.ts.map +1 -0
- package/dist/core/device-flow.js +231 -0
- package/dist/core/device-flow.js.map +1 -0
- package/dist/core/index.d.ts +16 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lark-client.d.ts +136 -0
- package/dist/core/lark-client.d.ts.map +1 -0
- package/dist/core/lark-client.js +315 -0
- package/dist/core/lark-client.js.map +1 -0
- package/dist/core/token-store.d.ts +67 -0
- package/dist/core/token-store.d.ts.map +1 -0
- package/dist/core/token-store.js +215 -0
- package/dist/core/token-store.js.map +1 -0
- package/dist/core/types.d.ts +286 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +11 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/uat-client.d.ts +64 -0
- package/dist/core/uat-client.d.ts.map +1 -0
- package/dist/core/uat-client.js +227 -0
- package/dist/core/uat-client.js.map +1 -0
- package/dist/core/version.d.ts +26 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +50 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/bitable/app.d.ts +20 -0
- package/dist/tools/bitable/app.d.ts.map +1 -0
- package/dist/tools/bitable/app.js +301 -0
- package/dist/tools/bitable/app.js.map +1 -0
- package/dist/tools/bitable/field.d.ts +19 -0
- package/dist/tools/bitable/field.d.ts.map +1 -0
- package/dist/tools/bitable/field.js +315 -0
- package/dist/tools/bitable/field.js.map +1 -0
- package/dist/tools/bitable/index.d.ts +21 -0
- package/dist/tools/bitable/index.d.ts.map +1 -0
- package/dist/tools/bitable/index.js +39 -0
- package/dist/tools/bitable/index.js.map +1 -0
- package/dist/tools/bitable/record.d.ts +22 -0
- package/dist/tools/bitable/record.d.ts.map +1 -0
- package/dist/tools/bitable/record.js +434 -0
- package/dist/tools/bitable/record.js.map +1 -0
- package/dist/tools/bitable/table.d.ts +21 -0
- package/dist/tools/bitable/table.d.ts.map +1 -0
- package/dist/tools/bitable/table.js +361 -0
- package/dist/tools/bitable/table.js.map +1 -0
- package/dist/tools/calendar/calendar.d.ts +18 -0
- package/dist/tools/calendar/calendar.d.ts.map +1 -0
- package/dist/tools/calendar/calendar.js +192 -0
- package/dist/tools/calendar/calendar.js.map +1 -0
- package/dist/tools/calendar/event.d.ts +20 -0
- package/dist/tools/calendar/event.d.ts.map +1 -0
- package/dist/tools/calendar/event.js +465 -0
- package/dist/tools/calendar/event.js.map +1 -0
- package/dist/tools/calendar/index.d.ts +19 -0
- package/dist/tools/calendar/index.d.ts.map +1 -0
- package/dist/tools/calendar/index.js +37 -0
- package/dist/tools/calendar/index.js.map +1 -0
- package/dist/tools/chat/chat.d.ts +11 -0
- package/dist/tools/chat/chat.d.ts.map +1 -0
- package/dist/tools/chat/chat.js +106 -0
- package/dist/tools/chat/chat.js.map +1 -0
- package/dist/tools/chat/index.d.ts +11 -0
- package/dist/tools/chat/index.d.ts.map +1 -0
- package/dist/tools/chat/index.js +20 -0
- package/dist/tools/chat/index.js.map +1 -0
- package/dist/tools/chat/members.d.ts +9 -0
- package/dist/tools/chat/members.d.ts.map +1 -0
- package/dist/tools/chat/members.js +80 -0
- package/dist/tools/chat/members.js.map +1 -0
- package/dist/tools/common/get-user.d.ts +11 -0
- package/dist/tools/common/get-user.d.ts.map +1 -0
- package/dist/tools/common/get-user.js +112 -0
- package/dist/tools/common/get-user.js.map +1 -0
- package/dist/tools/common/index.d.ts +11 -0
- package/dist/tools/common/index.d.ts.map +1 -0
- package/dist/tools/common/index.js +20 -0
- package/dist/tools/common/index.js.map +1 -0
- package/dist/tools/common/search-user.d.ts +9 -0
- package/dist/tools/common/search-user.d.ts.map +1 -0
- package/dist/tools/common/search-user.js +88 -0
- package/dist/tools/common/search-user.js.map +1 -0
- package/dist/tools/doc/create.d.ts +17 -0
- package/dist/tools/doc/create.d.ts.map +1 -0
- package/dist/tools/doc/create.js +159 -0
- package/dist/tools/doc/create.js.map +1 -0
- package/dist/tools/doc/fetch.d.ts +17 -0
- package/dist/tools/doc/fetch.d.ts.map +1 -0
- package/dist/tools/doc/fetch.js +123 -0
- package/dist/tools/doc/fetch.js.map +1 -0
- package/dist/tools/doc/index.d.ts +21 -0
- package/dist/tools/doc/index.d.ts.map +1 -0
- package/dist/tools/doc/index.js +33 -0
- package/dist/tools/doc/index.js.map +1 -0
- package/dist/tools/doc/shared.d.ts +69 -0
- package/dist/tools/doc/shared.d.ts.map +1 -0
- package/dist/tools/doc/shared.js +172 -0
- package/dist/tools/doc/shared.js.map +1 -0
- package/dist/tools/doc/update.d.ts +25 -0
- package/dist/tools/doc/update.d.ts.map +1 -0
- package/dist/tools/doc/update.js +208 -0
- package/dist/tools/doc/update.js.map +1 -0
- package/dist/tools/drive/file.d.ts +13 -0
- package/dist/tools/drive/file.d.ts.map +1 -0
- package/dist/tools/drive/file.js +212 -0
- package/dist/tools/drive/file.js.map +1 -0
- package/dist/tools/drive/index.d.ts +12 -0
- package/dist/tools/drive/index.d.ts.map +1 -0
- package/dist/tools/drive/index.js +25 -0
- package/dist/tools/drive/index.js.map +1 -0
- package/dist/tools/im/format-messages.d.ts +99 -0
- package/dist/tools/im/format-messages.d.ts.map +1 -0
- package/dist/tools/im/format-messages.js +277 -0
- package/dist/tools/im/format-messages.js.map +1 -0
- package/dist/tools/im/helpers.d.ts +53 -0
- package/dist/tools/im/helpers.d.ts.map +1 -0
- package/dist/tools/im/helpers.js +85 -0
- package/dist/tools/im/helpers.js.map +1 -0
- package/dist/tools/im/index.d.ts +25 -0
- package/dist/tools/im/index.d.ts.map +1 -0
- package/dist/tools/im/index.js +44 -0
- package/dist/tools/im/index.js.map +1 -0
- package/dist/tools/im/message-read.d.ts +19 -0
- package/dist/tools/im/message-read.d.ts.map +1 -0
- package/dist/tools/im/message-read.js +526 -0
- package/dist/tools/im/message-read.js.map +1 -0
- package/dist/tools/im/message.d.ts +22 -0
- package/dist/tools/im/message.d.ts.map +1 -0
- package/dist/tools/im/message.js +233 -0
- package/dist/tools/im/message.js.map +1 -0
- package/dist/tools/im/resource.d.ts +19 -0
- package/dist/tools/im/resource.d.ts.map +1 -0
- package/dist/tools/im/resource.js +185 -0
- package/dist/tools/im/resource.js.map +1 -0
- package/dist/tools/im/time-utils.d.ts +70 -0
- package/dist/tools/im/time-utils.d.ts.map +1 -0
- package/dist/tools/im/time-utils.js +277 -0
- package/dist/tools/im/time-utils.js.map +1 -0
- package/dist/tools/index.d.ts +85 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +135 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/oauth.d.ts +15 -0
- package/dist/tools/oauth.d.ts.map +1 -0
- package/dist/tools/oauth.js +379 -0
- package/dist/tools/oauth.js.map +1 -0
- package/dist/tools/search/doc-search.d.ts +9 -0
- package/dist/tools/search/doc-search.d.ts.map +1 -0
- package/dist/tools/search/doc-search.js +219 -0
- package/dist/tools/search/doc-search.js.map +1 -0
- package/dist/tools/search/index.d.ts +11 -0
- package/dist/tools/search/index.d.ts.map +1 -0
- package/dist/tools/search/index.js +18 -0
- package/dist/tools/search/index.js.map +1 -0
- package/dist/tools/sheets/index.d.ts +11 -0
- package/dist/tools/sheets/index.d.ts.map +1 -0
- package/dist/tools/sheets/index.js +18 -0
- package/dist/tools/sheets/index.js.map +1 -0
- package/dist/tools/sheets/sheet.d.ts +11 -0
- package/dist/tools/sheets/sheet.d.ts.map +1 -0
- package/dist/tools/sheets/sheet.js +332 -0
- package/dist/tools/sheets/sheet.js.map +1 -0
- package/dist/tools/task/index.d.ts +12 -0
- package/dist/tools/task/index.d.ts.map +1 -0
- package/dist/tools/task/index.js +30 -0
- package/dist/tools/task/index.js.map +1 -0
- package/dist/tools/task/task.d.ts +13 -0
- package/dist/tools/task/task.d.ts.map +1 -0
- package/dist/tools/task/task.js +225 -0
- package/dist/tools/task/task.js.map +1 -0
- package/dist/tools/task/tasklist.d.ts +13 -0
- package/dist/tools/task/tasklist.d.ts.map +1 -0
- package/dist/tools/task/tasklist.js +206 -0
- package/dist/tools/task/tasklist.js.map +1 -0
- package/dist/tools/wiki/index.d.ts +11 -0
- package/dist/tools/wiki/index.d.ts.map +1 -0
- package/dist/tools/wiki/index.js +20 -0
- package/dist/tools/wiki/index.js.map +1 -0
- package/dist/tools/wiki/node.d.ts +11 -0
- package/dist/tools/wiki/node.d.ts.map +1 -0
- package/dist/tools/wiki/node.js +112 -0
- package/dist/tools/wiki/node.js.map +1 -0
- package/dist/tools/wiki/space.d.ts +11 -0
- package/dist/tools/wiki/space.d.ts.map +1 -0
- package/dist/tools/wiki/space.js +125 -0
- package/dist/tools/wiki/space.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +101 -0
- package/dist/utils/logger.js.map +1 -0
- package/eslint.config.js +13 -0
- package/package.json +54 -0
- package/skills/feishu-bitable/SKILL.md +248 -0
- package/skills/feishu-bitable/references/examples.md +813 -0
- package/skills/feishu-bitable/references/field-properties.md +763 -0
- package/skills/feishu-bitable/references/record-values.md +911 -0
- package/skills/feishu-calendar/SKILL.md +244 -0
- package/skills/feishu-channel-rules/SKILL.md +18 -0
- package/skills/feishu-channel-rules/references/markdown-syntax.md +138 -0
- package/skills/feishu-create-doc/SKILL.md +719 -0
- package/skills/feishu-fetch-doc/SKILL.md +93 -0
- package/skills/feishu-im-read/SKILL.md +163 -0
- package/skills/feishu-task/SKILL.md +293 -0
- package/skills/feishu-troubleshoot/SKILL.md +70 -0
- package/skills/feishu-update-doc/SKILL.md +285 -0
- package/src/core/api-error.ts +342 -0
- package/src/core/auth-errors.ts +27 -0
- package/src/core/config.ts +134 -0
- package/src/core/device-flow.ts +314 -0
- package/src/core/index.ts +16 -0
- package/src/core/lark-client.ts +391 -0
- package/src/core/token-store.ts +249 -0
- package/src/core/types.ts +302 -0
- package/src/core/uat-client.ts +298 -0
- package/src/core/version.ts +53 -0
- package/src/index.ts +138 -0
- package/src/tools/bitable/app.ts +390 -0
- package/src/tools/bitable/field.ts +406 -0
- package/src/tools/bitable/index.ts +43 -0
- package/src/tools/bitable/record.ts +559 -0
- package/src/tools/bitable/table.ts +472 -0
- package/src/tools/calendar/calendar.ts +254 -0
- package/src/tools/calendar/event.ts +606 -0
- package/src/tools/calendar/index.ts +41 -0
- package/src/tools/chat/chat.ts +127 -0
- package/src/tools/chat/index.ts +24 -0
- package/src/tools/chat/members.ts +93 -0
- package/src/tools/common/get-user.ts +127 -0
- package/src/tools/common/index.ts +24 -0
- package/src/tools/common/search-user.ts +99 -0
- package/src/tools/doc/create.ts +184 -0
- package/src/tools/doc/fetch.ts +149 -0
- package/src/tools/doc/index.ts +38 -0
- package/src/tools/doc/shared.ts +228 -0
- package/src/tools/doc/update.ts +240 -0
- package/src/tools/drive/file.ts +265 -0
- package/src/tools/drive/index.ts +29 -0
- package/src/tools/im/format-messages.ts +391 -0
- package/src/tools/im/helpers.ts +109 -0
- package/src/tools/im/index.ts +49 -0
- package/src/tools/im/message-read.ts +676 -0
- package/src/tools/im/message.ts +303 -0
- package/src/tools/im/resource.ts +225 -0
- package/src/tools/im/time-utils.ts +347 -0
- package/src/tools/index.ts +205 -0
- package/src/tools/oauth.ts +460 -0
- package/src/tools/search/doc-search.ts +250 -0
- package/src/tools/search/index.ts +22 -0
- package/src/tools/sheets/index.ts +22 -0
- package/src/tools/sheets/sheet.ts +382 -0
- package/src/tools/task/index.ts +34 -0
- package/src/tools/task/task.ts +265 -0
- package/src/tools/task/tasklist.ts +262 -0
- package/src/tools/wiki/index.ts +24 -0
- package/src/tools/wiki/node.ts +131 -0
- package/src/tools/wiki/space.ts +152 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/logger.ts +132 -0
- package/tests/core/config.test.ts +238 -0
- package/tests/core/device-flow.test.ts +490 -0
- package/tests/core/lark-client.test.ts +378 -0
- package/tests/core/token-store.test.ts +438 -0
- package/tests/index.test.ts +360 -0
- package/tests/tools/doc/create.test.ts +224 -0
- package/tests/tools/doc/fetch.test.ts +182 -0
- package/tests/tools/doc/shared.test.ts +183 -0
- package/tests/tools/doc/update.test.ts +330 -0
- package/tests/tools/im/format-messages.test.ts +184 -0
- package/tests/tools/im/time-utils.test.ts +178 -0
- package/tests/utils/logger.test.ts +140 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feishu-bitable
|
|
3
|
+
description: |
|
|
4
|
+
飞书多维表格(Bitable)的创建、查询、编辑和管理工具。包含 27 种字段类型支持、高级筛选、批量操作和视图管理。
|
|
5
|
+
|
|
6
|
+
**当以下情况时使用此 Skill**:
|
|
7
|
+
(1) 需要创建或管理飞书多维表格 App
|
|
8
|
+
(2) 需要在多维表格中新增、查询、修改、删除记录(行数据)
|
|
9
|
+
(3) 需要管理字段(列)、视图、数据表
|
|
10
|
+
(4) 用户提到"多维表格"、"bitable"、"数据表"、"记录"、"字段"
|
|
11
|
+
(5) 需要批量导入数据或批量更新多维表格
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Feishu Bitable (多维表格) SKILL
|
|
15
|
+
|
|
16
|
+
## 🚨 执行前必读
|
|
17
|
+
|
|
18
|
+
- ✅ **创建数据表**:支持两种模式 — ① 明确需求时,在 `create` 时通过 `table.fields` 一次性定义字段(减少 API 调用);② 探索式场景时,使用默认表 + 逐步修改字段(更稳定,易调整)
|
|
19
|
+
- ⚠️ **默认表的空行坑**:`app.create` 自带的默认表中会有空记录(空行)!插入数据前建议先调用 `feishu_bitable_app_table_record.list` + `batch_delete` 删除空行,避免数据污染
|
|
20
|
+
- ✅ **写记录前**:先调用 `feishu_bitable_app_table_field.list` 获取字段 type/ui_type
|
|
21
|
+
- ✅ **人员字段**:默认 open_id(ou_...),值必须是 `[{id:"ou_xxx"}]`(数组对象)
|
|
22
|
+
- ✅ **日期字段**:毫秒时间戳(例如 `1674206443000`),不是秒
|
|
23
|
+
- ✅ **单选字段**:字符串(例如 `"选项1"`),不是数组
|
|
24
|
+
- ✅ **多选字段**:字符串数组(例如 `["选项1", "选项2"]`)
|
|
25
|
+
- ✅ **附件字段**:必须先上传到当前多维表格,使用返回的 file_token
|
|
26
|
+
- ✅ **批量上限**:单次 ≤ 500 条,超过需分批(批量操作是原子性的)
|
|
27
|
+
- ✅ **并发限制**:同一数据表不支持并发写,需串行调用 + 延迟 0.5-1 秒
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 📋 快速索引:意图 → 工具 → 必填参数
|
|
32
|
+
|
|
33
|
+
| 用户意图 | 工具 | action | 必填参数 | 常用可选 |
|
|
34
|
+
|---------|------|--------|---------|---------|
|
|
35
|
+
| 查表有哪些字段 | feishu_bitable_app_table_field | list | app_token, table_id | - |
|
|
36
|
+
| 查记录 | feishu_bitable_app_table_record | list | app_token, table_id | filter, sort, field_names |
|
|
37
|
+
| 新增一行 | feishu_bitable_app_table_record | create | app_token, table_id, fields | - |
|
|
38
|
+
| 批量导入 | feishu_bitable_app_table_record | batch_create | app_token, table_id, records (≤500) | - |
|
|
39
|
+
| 更新一行 | feishu_bitable_app_table_record | update | app_token, table_id, record_id, fields | - |
|
|
40
|
+
| 批量更新 | feishu_bitable_app_table_record | batch_update | app_token, table_id, records (≤500) | - |
|
|
41
|
+
| 创建多维表格 | feishu_bitable_app | create | name | folder_token |
|
|
42
|
+
| 创建数据表 | feishu_bitable_app_table | create | app_token, name | fields |
|
|
43
|
+
| 创建字段 | feishu_bitable_app_table_field | create | app_token, table_id, field_name, type | property |
|
|
44
|
+
| 创建视图 | feishu_bitable_app_table_view | create | app_token, table_id, view_name, view_type | - |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 🎯 核心约束(Schema 未透露的知识)
|
|
49
|
+
|
|
50
|
+
### 📚 详细参考文档
|
|
51
|
+
|
|
52
|
+
**当遇到字段配置、记录值格式问题或需要完整示例时,查阅以下文档**:
|
|
53
|
+
|
|
54
|
+
- **[字段 Property 配置详解](references/field-properties.md)** - 每种字段类型创建/更新时需要的 `property` 参数结构(单选的 options、进度的 min/max、关联的 table_id 等)
|
|
55
|
+
- **[记录值数据结构详解](references/record-values.md)** - 每种字段类型在记录中对应的 `fields` 值格式(人员字段只传 id、日期是毫秒时间戳、附件需先上传等)
|
|
56
|
+
- **[使用场景完整示例](references/examples.md)** - 8 个完整场景示例(创建表模式对比、批量导入、筛选查询、附件处理、关联字段等)
|
|
57
|
+
|
|
58
|
+
**何时查阅**:
|
|
59
|
+
- 创建/更新字段时收到 `125408X` 错误码(property 结构错误)→ 查 field-properties.md
|
|
60
|
+
- 写入记录时收到 `125406X` 错误码(字段值转换失败)→ 查 record-values.md
|
|
61
|
+
- 需要完整的操作流程和参数示例 → 查 examples.md
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### 1. 字段类型与值格式必须严格匹配
|
|
66
|
+
|
|
67
|
+
**Bitable 最大的坑**:不同字段类型对 value 的数据结构要求完全不同。
|
|
68
|
+
|
|
69
|
+
#### 最易错的字段类型(完整列表见 [record-values.md](references/record-values.md))
|
|
70
|
+
|
|
71
|
+
| type | ui_type | 字段类型 | 正确格式 | ❌ 常见错误 |
|
|
72
|
+
|------|---------|----------|---------|-----------|
|
|
73
|
+
| 11 | User | 人员 | `[{id: "ou_xxx"}]` | 传字符串 `"ou_xxx"` 或 `[{name: "张三"}]` |
|
|
74
|
+
| 5 | DateTime | 日期 | `1674206443000`(毫秒) | 传秒时间戳或字符串 |
|
|
75
|
+
| 3 | SingleSelect | 单选 | `"选项名"` | 传数组 `["选项名"]` |
|
|
76
|
+
| 4 | MultiSelect | 多选 | `["选项1", "选项2"]` | 传字符串 `"选项1"` |
|
|
77
|
+
| 15 | Url | 超链接 | `{link: "...", text: "..."}` | 只传字符串 URL |
|
|
78
|
+
| 17 | Attachment | 附件 | `[{file_token: "..."}]` | 传外部 URL 或本地路径 |
|
|
79
|
+
|
|
80
|
+
**强制流程**:
|
|
81
|
+
1. 先调用 `feishu_bitable_app_table_field.list` 获取字段的 `type` 和 `ui_type`
|
|
82
|
+
2. 根据上表或 [record-values.md](references/record-values.md) 构造正确格式
|
|
83
|
+
3. 错误码 `125406X` 或 `1254015` → 检查字段值格式
|
|
84
|
+
|
|
85
|
+
**人员字段特别注意**:
|
|
86
|
+
- 默认使用 open_id(ou_...),与 calendar/task 一致
|
|
87
|
+
- 格式:`[{id: "ou_xxx"}]`(数组对象)
|
|
88
|
+
- **只能传 id 字段**,不能传 name/email 等
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
## 📌 核心使用场景
|
|
92
|
+
|
|
93
|
+
> **完整示例**: 查阅 [examples.md](references/examples.md) 了解更多场景(创建表模式对比、空行处理、附件上传、关联字段等)
|
|
94
|
+
|
|
95
|
+
### 场景 1: 查字段类型(必做第一步)
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"action": "list",
|
|
100
|
+
"app_token": "S404b...",
|
|
101
|
+
"table_id": "tbl..."
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**返回**:包含每个字段的 `field_id`、`field_name`、`type`、`ui_type`、`property`
|
|
106
|
+
|
|
107
|
+
### 场景 2: 批量导入客户数据
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"action": "batch_create",
|
|
112
|
+
"app_token": "S404b...",
|
|
113
|
+
"table_id": "tbl...",
|
|
114
|
+
"records": [
|
|
115
|
+
{
|
|
116
|
+
"fields": {
|
|
117
|
+
"客户名称": "Bytedance",
|
|
118
|
+
"负责人": [{"id": "ou_xxx"}],
|
|
119
|
+
"签约日期": 1674206443000,
|
|
120
|
+
"状态": "进行中"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"fields": {
|
|
125
|
+
"客户名称": "飞书",
|
|
126
|
+
"负责人": [{"id": "ou_yyy"}],
|
|
127
|
+
"签约日期": 1675416243000,
|
|
128
|
+
"状态": "已完成"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**字段值格式**:
|
|
136
|
+
- 人员:`[{id: "ou_xxx"}]`(数组对象)
|
|
137
|
+
- 日期:毫秒时间戳
|
|
138
|
+
- 单选:字符串
|
|
139
|
+
- 多选:字符串数组
|
|
140
|
+
|
|
141
|
+
**限制**: 最多 500 条记录
|
|
142
|
+
|
|
143
|
+
### 场景 3: 筛选查询(高级筛选)
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"action": "list",
|
|
148
|
+
"app_token": "S404b...",
|
|
149
|
+
"table_id": "tbl...",
|
|
150
|
+
"filter": {
|
|
151
|
+
"conjunction": "and",
|
|
152
|
+
"conditions": [
|
|
153
|
+
{
|
|
154
|
+
"field_name": "状态",
|
|
155
|
+
"operator": "is",
|
|
156
|
+
"value": ["进行中"]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"field_name": "截止日期",
|
|
160
|
+
"operator": "isLess",
|
|
161
|
+
"value": ["ExactDate", "1740441600000"]
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"sort": [
|
|
166
|
+
{
|
|
167
|
+
"field_name": "截止日期",
|
|
168
|
+
"desc": false
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**filter 说明**:
|
|
175
|
+
- 支持 10 种 operator(is/isNot/contains/isEmpty 等,见附录 C)
|
|
176
|
+
- ⚠️ **isEmpty/isNotEmpty 必须传 `value: []`**(虽然逻辑上不需要值,但 API 要求必须传空数组)
|
|
177
|
+
- 日期筛选可使用 `["Today"]`、`["ExactDate", "时间戳"]` 等
|
|
178
|
+
- `sort` 可指定多个排序字段
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 🔍 常见错误与排查
|
|
183
|
+
|
|
184
|
+
| 错误码 | 错误现象 | 根本原因 | 解决方案 |
|
|
185
|
+
|--------|---------|---------|---------|
|
|
186
|
+
| 1254064 | DatetimeFieldConvFail | 日期字段格式错误 | **必须用毫秒时间戳**(如 `1772121600000`),不能用字符串(`"2026-02-27"`、RFC3339)或秒级时间戳 |
|
|
187
|
+
| 1254068 | URLFieldConvFail | 超链接字段格式错误 | **必须用对象** `{text: "显示文本", link: "URL"}`,不能直接传字符串 URL |
|
|
188
|
+
| 1254066 | UserFieldConvFail | 人员字段格式错误或 ID 类型不匹配 | 必须传 `[{id: "ou_xxx"}]`,确认 `user_id_type` |
|
|
189
|
+
| 1254015 | Field types do not match | 字段值格式与类型不匹配 | 先 list 字段,按类型构造正确格式 |
|
|
190
|
+
| 1254104 | RecordAddOnceExceedLimit | 批量创建超过 500 条 | 分批调用,每批 ≤ 500 |
|
|
191
|
+
| 1254291 | Write conflict | 并发写冲突 | 串行调用 + 延迟 0.5-1 秒 |
|
|
192
|
+
| 1254303 | AttachPermNotAllow | 附件未上传到当前表格 | 先调用上传素材接口 |
|
|
193
|
+
| 1254045 | FieldNameNotFound | 字段名不存在 | 检查字段名(包括空格、大小写) |
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 📚 附录:背景知识
|
|
198
|
+
|
|
199
|
+
### A. 资源层级关系
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
App (多维表格应用)
|
|
203
|
+
├── Table (数据表) ×100
|
|
204
|
+
│ ├── Record (记录/行) ×20,000
|
|
205
|
+
│ ├── Field (字段/列) ×300
|
|
206
|
+
│ └── View (视图) ×200
|
|
207
|
+
└── Dashboard (仪表盘)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### B. 筛选条件 operator 列表
|
|
211
|
+
|
|
212
|
+
| operator | 含义 | 支持字段 | value 要求 |
|
|
213
|
+
|----------|------|----------|-----------|
|
|
214
|
+
| `is` | 等于 | 所有 | 单个值 |
|
|
215
|
+
| `isNot` | 不等于 | 除日期外 | 单个值 |
|
|
216
|
+
| `contains` | 包含 | 除日期外 | 可多个值 |
|
|
217
|
+
| `doesNotContain` | 不包含 | 除日期外 | 可多个值 |
|
|
218
|
+
| `isEmpty` | 为空 | 所有 | 必须为 `[]` |
|
|
219
|
+
| `isNotEmpty` | 不为空 | 所有 | 必须为 `[]` |
|
|
220
|
+
| `isGreater` | 大于 | 数字、日期 | 单个值 |
|
|
221
|
+
| `isGreaterEqual` | 大于等于 | 数字(不支持日期) | 单个值 |
|
|
222
|
+
| `isLess` | 小于 | 数字、日期 | 单个值 |
|
|
223
|
+
| `isLessEqual` | 小于等于 | 数字(不支持日期) | 单个值 |
|
|
224
|
+
|
|
225
|
+
**日期字段特殊值**: `["Today"]`, `["Tomorrow"]`, `["ExactDate", "时间戳"]` 等(完整列表见 [examples.md](references/examples.md#场景-3-筛选查询高级筛选))
|
|
226
|
+
|
|
227
|
+
### C. 使用限制
|
|
228
|
+
|
|
229
|
+
| 限制项 | 上限 |
|
|
230
|
+
|--------|------|
|
|
231
|
+
| 数据表 + 仪表盘 | 100(单个 App) |
|
|
232
|
+
| 记录数 | 20,000(单个数据表) |
|
|
233
|
+
| 字段数 | 300(单个数据表) |
|
|
234
|
+
| 视图数 | 200(单个数据表) |
|
|
235
|
+
| 批量创建/更新/删除 | 500(单次 API 调用) |
|
|
236
|
+
| 单元格文本 | 10 万字符 |
|
|
237
|
+
| 单选/多选选项 | 20,000(单个字段) |
|
|
238
|
+
| 单元格附件 | 100 |
|
|
239
|
+
| 单元格人员 | 1,000 |
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
### D. 其他约束
|
|
244
|
+
|
|
245
|
+
- 从其他数据源同步的数据表,**不支持增删改**记录
|
|
246
|
+
- 公式字段、查看引用字段是**只读**的
|
|
247
|
+
- 删除操作**无法恢复**
|
|
248
|
+
- 视图筛选条件使用 `field_id`,需先调用 field.list 获取
|