@amaster.ai/pi-lark 0.1.2-beta.65 → 0.1.2-beta.67
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/package.json +2 -2
- package/skills/lark-base/references/lark-base-dashboard-block-config.md +31 -0
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +6 -3
- package/skills/lark-base/references/lark-base-dashboard.md +17 -1
- package/skills/lark-base/references/lark-base-workflow-schema.md +2 -2
- package/skills/lark-calendar/SKILL.md +44 -16
- package/skills/lark-calendar/references/lark-calendar-list-attendees.md +33 -0
- package/skills/lark-calendar/references/lark-calendar-recurring.md +62 -66
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +7 -1
- package/skills/lark-doc/references/lark-doc-create-workflow.md +2 -2
- package/skills/lark-doc/references/lark-doc-script.md +1 -1
- package/skills/lark-drive/references/lark-drive-comment-location.md +1 -1
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +1 -1
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +1 -1
- package/skills/lark-okr/SKILL.md +38 -29
- package/skills/lark-okr/references/lark-okr-comment-create.md +103 -0
- package/skills/lark-okr/references/lark-okr-comment-delete.md +59 -0
- package/skills/lark-okr/references/lark-okr-comment-detail.md +80 -0
- package/skills/lark-okr/references/lark-okr-comment-get.md +66 -0
- package/skills/lark-okr/references/lark-okr-comment-list.md +79 -0
- package/skills/lark-okr/references/lark-okr-comment-patch.md +73 -0
- package/skills/lark-okr/references/lark-okr-comment-solve-reopen.md +83 -0
- package/skills/lark-okr/references/lark-okr-entities.md +66 -2
- package/skills/lark-sheets/SKILL.md +1 -0
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +3 -3
- package/skills/lark-sheets/references/lark-sheets-legacy-command-migration.md +152 -0
- package/skills/lark-sheets/references/lark-sheets-read-data.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -17
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# okr +comment-solve / +comment-reopen
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [lark-shared/SKILL.md](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则;
|
|
4
|
+
|
|
5
|
+
解决/重新打开一条评论。实体级评论按单条评论处理;划词评论则是操作整个评论串。只支持 user 身份。
|
|
6
|
+
|
|
7
|
+
## 推荐命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 解决实体级评论或整个划词评论串。
|
|
11
|
+
lark-cli okr +comment-solve --comment-id 7000000000000000004
|
|
12
|
+
|
|
13
|
+
# 重新打开已解决的实体级评论或划词评论串。
|
|
14
|
+
lark-cli okr +comment-reopen --comment-id 7000000000000000004
|
|
15
|
+
|
|
16
|
+
# 预览解决评论的状态变更请求,不实际执行。
|
|
17
|
+
lark-cli okr +comment-solve --comment-id 7000000000000000004 --dry-run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 参数
|
|
21
|
+
|
|
22
|
+
| 参数 | 必填 | 默认值 | 说明 |
|
|
23
|
+
|----------------|------|---------|---------------------------------------------------------------------------------------|
|
|
24
|
+
| --comment-id | 是 | — | 评论 ID,int64 正整数。可从 +comment-list、+comment-detail 或 +comment-get 获取。 |
|
|
25
|
+
| --user-id-type | 否 | open_id | open_id、union_id、user_id 或 user_key。 |
|
|
26
|
+
| --style | 否 | simple | affected_comments 的正文风格:simple(SemiPlainContent)或 richtext(ContentBlock)。 |
|
|
27
|
+
| --dry-run | 否 | — | 预览 API 调用而不实际执行。 |
|
|
28
|
+
| --format | 否 | json | 输出格式。 |
|
|
29
|
+
|
|
30
|
+
## 工作流程
|
|
31
|
+
|
|
32
|
+
1. 使用 [+comment-list](lark-okr-comment-list.md)、[+comment-detail](lark-okr-comment-detail.md) 或 [+comment-get](lark-okr-comment-get.md) 获取并确认 comment-id。
|
|
33
|
+
2. 检查评论是否属于划词串:如果返回有 selection.id,solve/reopen 会影响同一 selection.id 下的全部评论。
|
|
34
|
+
3. 根据用户动作选择 +comment-solve 或 +comment-reopen;先用 --dry-run 检查目标接口。
|
|
35
|
+
4. 执行后检查 affected_comments,确认实体级评论或整条评论串的状态变化范围。
|
|
36
|
+
|
|
37
|
+
## 输出
|
|
38
|
+
|
|
39
|
+
返回 JSON:
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"affected_comments": [
|
|
44
|
+
{
|
|
45
|
+
"id": "7000000000000000004",
|
|
46
|
+
"target": {
|
|
47
|
+
"target_type": "objective",
|
|
48
|
+
"target_id": "2345678901234567890"
|
|
49
|
+
},
|
|
50
|
+
"commentator_id": "ou_xxx",
|
|
51
|
+
"status": "solved",
|
|
52
|
+
"create_time": "2025-01-15 10:30:00",
|
|
53
|
+
"update_time": "2025-01-15 11:30:00",
|
|
54
|
+
"selection": {
|
|
55
|
+
"id": "8000000000000000001",
|
|
56
|
+
"selected_text": "提升核心接口稳定性"
|
|
57
|
+
},
|
|
58
|
+
"content": {
|
|
59
|
+
"text": "请补充指标", "mention": [], "docs": [], "images": []
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"style": "simple"
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- +comment-solve 成功后 affected_comments 的 status 通常为 solved;+comment-reopen 成功后通常为 open。
|
|
68
|
+
- simple 风格返回 SemiPlainContent;richtext 风格返回 ContentBlock。
|
|
69
|
+
|
|
70
|
+
## 注意事项
|
|
71
|
+
|
|
72
|
+
- 划词评论按评论串解决/重开,但 [+comment-delete](lark-okr-comment-delete.md) 仍然只删除单条评论。
|
|
73
|
+
- 解决不是删除,之后可以用 +comment-reopen 恢复;删除后不可恢复。
|
|
74
|
+
- 该操作是写操作,执行前应确认 comment-id 和目标动作。
|
|
75
|
+
|
|
76
|
+
## 参考
|
|
77
|
+
|
|
78
|
+
- [lark-okr](../SKILL.md) — OKR 命令、路由和通用约定
|
|
79
|
+
- [OKR 实体定义](lark-okr-entities.md) — Comment、评论串和状态规则
|
|
80
|
+
- [ContentBlock 格式](lark-okr-contentblock.md) — affected_comments 正文格式
|
|
81
|
+
- [okr +comment-get](lark-okr-comment-get.md) — 获取状态和 selection.id
|
|
82
|
+
- [okr +comment-delete](lark-okr-comment-delete.md) — 永久删除单条评论
|
|
83
|
+
- [lark-shared](../../lark-shared/SKILL.md) — 认证、身份、权限和安全规则
|
|
@@ -10,9 +10,12 @@ Cycle (用户周期)
|
|
|
10
10
|
├── KeyResult (关键结果)
|
|
11
11
|
│ └── Indicator (指标)
|
|
12
12
|
│ └── list<Progress> (进展记录列表)
|
|
13
|
+
│ └── list<Comment> (评论列表)
|
|
13
14
|
└── Indicator (指标)
|
|
14
15
|
└── list<Progress> (进展记录列表)
|
|
16
|
+
└── list<Comment> (评论列表)
|
|
15
17
|
|
|
18
|
+
Cycle、Progress 也可以直接挂载 Comment。
|
|
16
19
|
Alignment (对齐关系): Objective ↔ Objective
|
|
17
20
|
Category (分类): Objective 的分组标签
|
|
18
21
|
```
|
|
@@ -49,8 +52,11 @@ Category (分类): Objective 的分组标签
|
|
|
49
52
|
### 常用术语
|
|
50
53
|
|
|
51
54
|
- **当前周期**: 指周期的 start_time/end_time
|
|
52
|
-
指周期的 start_time / end_time 所在的时间段与当前时间重叠的周期(即: start_time <= 当前时间 且 end_time >= 当前时间)。
|
|
53
|
-
|
|
55
|
+
指周期的 start_time / end_time 所在的时间段与当前时间重叠的周期(即: start_time <= 当前时间 且 end_time >= 当前时间)。
|
|
56
|
+
注意:时间重叠是判断当前周期的首要且必须的硬性条件,绝对不能仅仅根据 cycle_status == 1 去判断。
|
|
57
|
+
如果有多个符合时间重叠标准的周期,再在这些包含当前时间的周期中过滤,保留周期状态为 default (0) 或 normal (1)
|
|
58
|
+
的周期。如果仍然有多个,则选择其中较新的一个。当用户提及“上一个周期”,“下一个周期”一类的表述时,通常是以当前周期为准计算。
|
|
59
|
+
- 如果用户没有提及,那么当前周期一般不考虑年度周期(起止时间从 01-01 至 12-31 的周期)
|
|
54
60
|
- **所有者**: 绝大多数所有者都是用户,少部分租户启用了“团队OKR”功能,所有者可能是部门。用户身份下,只能编辑所有者为当前用户的
|
|
55
61
|
OKR。
|
|
56
62
|
|
|
@@ -173,6 +179,64 @@ Category (分类): Objective 的分组标签
|
|
|
173
179
|
> - `okr +progress-update` [lark-okr-progress-update.md](lark-okr-progress-update.md) 更新进展记录内容
|
|
174
180
|
> - `okr +progress-delete` [lark-okr-progress-delete.md](lark-okr-progress-delete.md) 删除进展记录
|
|
175
181
|
> - `okr +progress-list` [lark-okr-progress-list.md](lark-okr-progress-list.md) 获取目标/关键结果下的进展记录
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Comment (评论)
|
|
186
|
+
|
|
187
|
+
评论可以挂载在 Cycle、Objective、KeyResult 或 Progress 上,用于对 OKR 实体或正文中的一段文字进行讨论。评论分为实体级评论和划词评论两种:
|
|
188
|
+
|
|
189
|
+
- **实体级评论**:直接附着在 Cycle 或 Progress 上。一条评论就是一个评论项,solve/reopen 只影响该评论。
|
|
190
|
+
- **划词评论**:附着在 Objective 或 KeyResult 的正文选区上,带有 `selection`。同一个 `selection.id`
|
|
191
|
+
下的评论属于同一个评论串;solve/reopen 按评论串处理,但 delete 仍然只删除指定的一条评论。
|
|
192
|
+
|
|
193
|
+
### Comment 字段
|
|
194
|
+
|
|
195
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
196
|
+
|------------------|--------------------|----|-----------------------------------------------------------------------------------------------|
|
|
197
|
+
| `id` | `string` | 是 | 评论 ID,int64 正整数。 |
|
|
198
|
+
| `target` | `CommentTarget` | 是 | 评论挂载对象,包含 `target_type` 和 `target_id`。类型为 `cycle`、`progress`、`objective` 或 `key_result`。 |
|
|
199
|
+
| `commentator_id` | `string` | 是 | 评论者 ID,返回 ID 类型由请求参数 `user_id_type` 决定。 |
|
|
200
|
+
| `status` | `string` | 是 | 评论状态:`open`(打开)或 `solved`(已解决)。 |
|
|
201
|
+
| `create_time` | `string` | 是 | 创建时间; |
|
|
202
|
+
| `update_time` | `string` | 是 | 最后更新时间; |
|
|
203
|
+
| `content` | `ContentBlock` | 否 | 评论正文,见 [ContentBlock 定义](lark-okr-contentblock.md)。 |
|
|
204
|
+
| `solver_id` | `string` | 否 | 解决评论的用户 ID。 |
|
|
205
|
+
| `solved_time` | `string` | 否 | 评论解决时间,毫秒时间戳。 |
|
|
206
|
+
| `ref_comment_id` | `string` | 否 | 被引用评论 ID。Progress/Cycle 等实体级评论可用它表示回复关系;Objective/KeyResult 的划词评论创建时可用它定位已有划词串,但新评论本身不建立引用关系。 |
|
|
207
|
+
| `selection` | `CommentSelection` | 否 | 划词信息。实体级评论为空;划词评论包含 selection ID 和可选的选区文本。 |
|
|
208
|
+
|
|
209
|
+
### CommentTarget (评论目标)
|
|
210
|
+
|
|
211
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
212
|
+
|---------------|----------|----|------------------------------------------------|
|
|
213
|
+
| `target_type` | `string` | 是 | `cycle`、`progress`、`objective` 或 `key_result`。 |
|
|
214
|
+
| `target_id` | `string` | 是 | 对应 Cycle、Progress、Objective 或 KeyResult 的 ID。 |
|
|
215
|
+
|
|
216
|
+
### CommentSelection (划词信息)
|
|
217
|
+
|
|
218
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
219
|
+
|-----------------|----------|----|-----------------------------|
|
|
220
|
+
| `id` | `string` | 是 | 划词 ID。同一 `id` 下的评论属于同一个评论串。 |
|
|
221
|
+
| `selected_text` | `string` | 否 | 划词锚定的正文文字。 |
|
|
222
|
+
|
|
223
|
+
### 评论创建与状态规则
|
|
224
|
+
|
|
225
|
+
- Cycle/Progress 创建实体级评论时不传 `selected_text`;可以通过 `ref_comment_id` 回复已有评论。
|
|
226
|
+
- Objective/KeyResult 创建划词评论时,`selected_text` 与 `ref_comment_id` 二选一:前者新建划词,后者将评论挂入被引用评论所属的已有划词串。shortcut
|
|
227
|
+
另外提供 `--select-all` 替代 `selected_text` 以选中 O/KR 内的全部内容。
|
|
228
|
+
- `solve` / `reopen` 的请求参数是单条评论 ID。对实体级评论只影响该评论;对划词评论会影响整条评论串。
|
|
229
|
+
- `delete` 永久删除指定评论,不会连带删除同一评论串的其他评论,且删除后不可找回。
|
|
230
|
+
|
|
231
|
+
> **SHORTCUT:**
|
|
232
|
+
> - `okr +comment-detail` [lark-okr-comment-detail.md](lark-okr-comment-detail.md) 获取周期下全部对象的评论并按评论串整理
|
|
233
|
+
> - `okr +comment-list` [lark-okr-comment-list.md](lark-okr-comment-list.md) 分页获取单个评论目标下的评论
|
|
234
|
+
> - `okr +comment-get` [lark-okr-comment-get.md](lark-okr-comment-get.md) 获取单条评论
|
|
235
|
+
> - `okr +comment-create` [lark-okr-comment-create.md](lark-okr-comment-create.md) 创建评论、回复或挂入已有划词串
|
|
236
|
+
> - `okr +comment-patch` [lark-okr-comment-patch.md](lark-okr-comment-patch.md) 修改评论正文
|
|
237
|
+
> - `okr +comment-delete` [lark-okr-comment-delete.md](lark-okr-comment-delete.md) 永久删除单条评论
|
|
238
|
+
> - `okr +comment-solve` [lark-okr-comment-solve-reopen.md](lark-okr-comment-solve-reopen.md) 解决评论/评论串
|
|
239
|
+
> - `okr +comment-reopen` [lark-okr-comment-solve-reopen.md](lark-okr-comment-solve-reopen.md) 重新打开评论/评论串
|
|
176
240
|
---
|
|
177
241
|
|
|
178
242
|
## Indicator (指标)
|
|
@@ -186,6 +186,7 @@ reference 分两组:先读**通用方法与规范**(横切所有任务的样
|
|
|
186
186
|
| [Lark Sheet Float Image](references/lark-sheets-float-image.md) | 管理飞书表格中的浮动图片。当用户需要在表格中插入浮动图片、调整图片位置和大小、查看已有浮动图片、删除图片时使用。也适用于"插入图片"、"添加 logo"、"放一张图"等场景。注意:如果用户需要将图片嵌入到某个单元格内部(单元格图片),请阅读 lark-sheets-write-cells。 |
|
|
187
187
|
| [Lark Sheet History](references/lark-sheets-history.md) | 查询飞书表格的历史版本并回滚到指定版本。当用户需要查看一张表的编辑历史版本列表、回滚到某个历史版本、或查询回滚的异步状态(进行中/成功/失败)时使用。回滚为异步操作,发起后通过状态查询轮询结果。仅针对飞书表格。 |
|
|
188
188
|
| [Lark Sheet Changeset](references/lark-sheets-changeset.md) | 读取两个版本(CS revision)之间的 changeset(原始变更操作清单),用于复核某次编辑——尤其是 AI 编辑——是否真实满足用户诉求。传入起始版本(编辑前基线),可选结束版本(省略取最新),版本差上限 20;返回里最外层带当前表格最新版本号。当用户需要"看看这次改了什么"、"核对 AI 改动"、"对比两个版本的变更"时使用。 |
|
|
189
|
+
| [Lark Sheet 旧命令迁移指南](references/lark-sheets-legacy-command-migration.md) | 重构前的 42 个 sheets 旧命令(`+create`、`+read`、`+write`、`+create-sheet`、`+media-upload` 等)已删除,调用会直接报 `unknown subcommand`。当手上的脚本或 skill 早于本次重构、或收到该报错时,用本文查替代命令,以及那些不只是改名的差异:单元格 payload 词汇(`{"type":"formula","text":…}` 已被拒绝)、响应字段路径、`+update-sheet` / `+update-dimension` 拆成多个命令。 |
|
|
189
190
|
|
|
190
191
|
## 公共 flag 速查
|
|
191
192
|
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
- 写时:用 `+batch-update` 一次性完成插行/写公式/复制模板等成套动作。
|
|
35
35
|
- 写后:抽样回读之外,可继续跑 `lark-sheets-formula-verify` 做一次诊断。
|
|
36
36
|
|
|
37
|
-
**`+dropdown-update` 的选项模式(`--options` / `--source-range` 二选一)+
|
|
37
|
+
**`+dropdown-update` 的选项模式(`--options` / `--source-range` 二选一)+ 配色规则**(更新会重写完整验证规则;需要保留已有配色时先回读并透传 `--colors`)见 [`lark-sheets-write-cells`](./lark-sheets-write-cells.md) 的「Dropdown 选项 + 配色」节,本文不重复。`+dropdown-delete` 不涉及这些 flag。
|
|
38
38
|
|
|
39
39
|
## Shortcuts
|
|
40
40
|
|
|
@@ -84,8 +84,8 @@ _公共:URL/token(无 sheet 定位) · 系统:`--dry-run`_
|
|
|
84
84
|
| --- | --- | --- | --- |
|
|
85
85
|
| `--ranges` | string + File + Stdin(简单 JSON) | required | 目标范围 JSON 数组(最多 100 个,如 `["Sheet1!A2:A100","Sheet1!C2:C100"]`,前缀裸写不加引号),每项必须带 sheet 前缀;前缀必须与 sheet 真实显示名完全一致(含大小写),不接受 sheet reference_id |
|
|
86
86
|
| `--options` | string + File + Stdin(复合 JSON) | xor | 下拉选项 JSON 数组,例如 `["opt1","opt2"]`。服务端不限制选项数量,也不限制单个选项长度;含逗号的选项可以接受(写入时会自动转义)。大量选项建议改用 `--source-range`。 |
|
|
87
|
-
| `--colors` | string + File + Stdin(简单 JSON) | optional | 下拉胶囊背景色,RGB hex
|
|
88
|
-
| `--multiple` | bool | optional |
|
|
87
|
+
| `--colors` | string + File + Stdin(简单 JSON) | optional | 下拉胶囊背景色,RGB hex 数组。更新会重写整条验证规则:若用户未要求重置配色,先用 `+dropdown-get` 回读并将现有 `highlight_colors` 作为本 flag 传回;省略会按内置 10 色色板重建。用户明确要求新配色或选项有清晰语义配色时,应选浅色、低饱和度背景以适配黑色文字。长度可短不可长——超长 Validate 拦截(`--colors length (N) must not exceed dropdown source size (M)`),未指定项按内置色板循环补色。单独传即生效;`--highlight=false` 时被忽略。 |
|
|
88
|
+
| `--multiple` | bool | optional | 启用多选。本 flag 只更新验证规则,不会写入选中值;后续用 `+cells-set` 写值时必须传 `multiple_values` 数组,不要传逗号拼接的 `value` |
|
|
89
89
|
| `--highlight` | bool | optional | 下拉胶囊背景色高亮开关。**不传 = 开**(按内置 10 色色板循环上色);`--highlight=false` 关闭得到纯白下拉。配色用 `--colors` 覆盖。 |
|
|
90
90
|
| `--source-range` | string | xor | listFromRange 模式的下拉源 range,A1 表示法 + sheet 前缀(如 `'Sheet1'!T1:T3`)。映射到 server `data_validation.range`,搭配 server `data_validation.type='listFromRange'` 自动生效。跟 `--options` 二选一:传 `--options` 走 inline 列表(type=list),传本 flag 走 range 引用(type=listFromRange)。`--colors` 长度规则不变(≤ 源 range 单元格数),`--highlight` / `--multiple` 行为相同。当 `--highlight` 开启且 source 覆盖单元格数超过 2000 时,服务端会将该下拉判为 option-error(这是不支持的组合);CLI 会在返回结果的 `data.warnings` 中给出 warning。如需取消,传 `--highlight=false`。 |
|
|
91
91
|
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Lark Sheet 旧命令迁移指南
|
|
2
|
+
|
|
3
|
+
## 适用场景
|
|
4
|
+
|
|
5
|
+
调用 `sheets` 旧命令(`+create`、`+read`、`+write`、`+create-sheet`、`+media-upload` 等 42 个)时收到
|
|
6
|
+
`unknown subcommand`,或手上的脚本 / skill 早于表格命令重构。本文给出全部旧命令的替代命令,以及
|
|
7
|
+
**不只是改名**的那些差异(flag 名、单元格 payload 写法、响应字段路径)。
|
|
8
|
+
|
|
9
|
+
这些旧命令在重构后曾以别名形式保留了一段时间,线上使用量降到 5% 以下后整体删除。它们不再存在,
|
|
10
|
+
也没有 deprecation 提示——直接报 `unknown subcommand`。
|
|
11
|
+
|
|
12
|
+
## 一、命令名对照表
|
|
13
|
+
|
|
14
|
+
### 工作簿
|
|
15
|
+
|
|
16
|
+
| 旧命令 | 替代 |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| `+create` | `+workbook-create` |
|
|
19
|
+
| `+info` | `+workbook-info` |
|
|
20
|
+
| `+export` | `+workbook-export` |
|
|
21
|
+
|
|
22
|
+
### 子表
|
|
23
|
+
|
|
24
|
+
| 旧命令 | 替代 |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| `+create-sheet` | `+sheet-create` |
|
|
27
|
+
| `+copy-sheet` | `+sheet-copy` |
|
|
28
|
+
| `+delete-sheet` | `+sheet-delete` |
|
|
29
|
+
| `+update-sheet` | 按意图拆开:`+sheet-rename` / `+sheet-move` / `+sheet-hide` / `+sheet-unhide` / `+dim-freeze` |
|
|
30
|
+
|
|
31
|
+
### 单元格数据
|
|
32
|
+
|
|
33
|
+
| 旧命令 | 替代 |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| `+read` | `+cells-get`(只要纯值 / CSV 用 `+csv-get`,整表用 `+table-get`) |
|
|
36
|
+
| `+write` | `+cells-set` |
|
|
37
|
+
| `+append` | `+table-put --sheets '{"sheets":[{…,"mode":"append"}]}'`(追加到已有数据下方;顶层必须是 `{"sheets":[…]}` 信封,裸数组会被拒绝);若已知目标行号,`+cells-set` 写该区域即可 |
|
|
38
|
+
| `+find` | `+cells-search` |
|
|
39
|
+
| `+replace` | `+cells-replace` |
|
|
40
|
+
|
|
41
|
+
### 样式 / 合并 / 单元格图片
|
|
42
|
+
|
|
43
|
+
| 旧命令 | 替代 |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| `+set-style` | `+cells-set-style` |
|
|
46
|
+
| `+batch-set-style` | `+cells-batch-set-style` |
|
|
47
|
+
| `+merge-cells` | `+cells-merge` |
|
|
48
|
+
| `+unmerge-cells` | `+cells-unmerge` |
|
|
49
|
+
| `+write-image` | `+cells-set-image` |
|
|
50
|
+
|
|
51
|
+
### 行列
|
|
52
|
+
|
|
53
|
+
| 旧命令 | 替代 |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `+add-dimension` | `+dim-insert` |
|
|
56
|
+
| `+insert-dimension` | `+dim-insert` |
|
|
57
|
+
| `+move-dimension` | `+dim-move` |
|
|
58
|
+
| `+delete-dimension` | `+dim-delete` |
|
|
59
|
+
| `+update-dimension` | 按意图拆开:`+rows-resize` / `+cols-resize` / `+dim-hide` / `+dim-unhide` / `+dim-group` / `+dim-ungroup` / `+dim-freeze` |
|
|
60
|
+
|
|
61
|
+
### 筛选视图
|
|
62
|
+
|
|
63
|
+
条件(condition)不再是独立对象,已折叠进视图自身的 flag。
|
|
64
|
+
|
|
65
|
+
| 旧命令 | 替代 |
|
|
66
|
+
| --- | --- |
|
|
67
|
+
| `+create-filter-view` | `+filter-view-create` |
|
|
68
|
+
| `+update-filter-view` | `+filter-view-update` |
|
|
69
|
+
| `+list-filter-views` | `+filter-view-list` |
|
|
70
|
+
| `+get-filter-view` | `+filter-view-list` |
|
|
71
|
+
| `+delete-filter-view` | `+filter-view-delete` |
|
|
72
|
+
| `+create-filter-view-condition` | `+filter-view-update` |
|
|
73
|
+
| `+update-filter-view-condition` | `+filter-view-update` |
|
|
74
|
+
| `+delete-filter-view-condition` | `+filter-view-update` |
|
|
75
|
+
| `+list-filter-view-conditions` | `+filter-view-list` |
|
|
76
|
+
| `+get-filter-view-condition` | `+filter-view-list` |
|
|
77
|
+
|
|
78
|
+
### 下拉列表
|
|
79
|
+
|
|
80
|
+
| 旧命令 | 替代 |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| `+set-dropdown` | `+dropdown-set` |
|
|
83
|
+
| `+update-dropdown` | `+dropdown-update` |
|
|
84
|
+
| `+get-dropdown` | `+dropdown-get` |
|
|
85
|
+
| `+delete-dropdown` | `+dropdown-delete` |
|
|
86
|
+
|
|
87
|
+
### 浮动图片
|
|
88
|
+
|
|
89
|
+
单独的上传步骤已折叠进创建命令:`+float-image-create` 直接收本地 `--image` 路径。
|
|
90
|
+
|
|
91
|
+
| 旧命令 | 替代 |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| `+media-upload` | `+float-image-create`(嵌入单元格内的图片用 `+cells-set-image`) |
|
|
94
|
+
| `+create-float-image` | `+float-image-create` |
|
|
95
|
+
| `+update-float-image` | `+float-image-update` |
|
|
96
|
+
| `+delete-float-image` | `+float-image-delete` |
|
|
97
|
+
| `+get-float-image` | `+float-image-list` |
|
|
98
|
+
| `+list-float-images` | `+float-image-list` |
|
|
99
|
+
|
|
100
|
+
## 二、只改命令名会踩的坑
|
|
101
|
+
|
|
102
|
+
### 1. 单元格 payload 词汇变了
|
|
103
|
+
|
|
104
|
+
旧命令的 `--values` 里,公式写成 `{"type":"formula","text":"=SUM(C2:C5)"}`。这类带 `type` / `text`
|
|
105
|
+
的写法会被 `+cells-set` **直接拒绝**:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
--cells[0][0].type is not a cell field — the value type is inferred from the JSON value;
|
|
109
|
+
control display format via cell_styles.number_format
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
新写法把字段直接放在 cell 对象上(`{"formula":"=SUM(C2:C5)"}`):
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
lark-cli sheets +cells-set --range C6 --cells '[[{"formula":"=SUM(C2:C5)"}]]'
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
内容字段只能选一个:`value` / `formula` / `rich_text` / `multiple_values`;`cell_styles`、`border_styles`、
|
|
119
|
+
`note`、`data_validation` 可与内容字段自由叠加。纯标量(`"文本"`、`123`)也可直接放在格位上。
|
|
120
|
+
完整字段用 `+cells-set --print-schema --flag-name cells` 查看。
|
|
121
|
+
|
|
122
|
+
`--values` 在 `+cells-set` 上仍作为 `--cells` 的别名被接受,所以**只有携带旧对象写法的调用才会失败**。
|
|
123
|
+
|
|
124
|
+
### 2. 响应字段路径变了
|
|
125
|
+
|
|
126
|
+
| 命令 | 取值路径 |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| `+workbook-create` | spreadsheet token 在 `data.spreadsheet.spreadsheet_token` |
|
|
129
|
+
| `+workbook-info` | 子表列表在 `data.sheets[]`(旧 `+info` 是 `data.sheets.sheets[]`);**不再回显** spreadsheet token |
|
|
130
|
+
| `+cells-get` | 值在 `data.ranges[].cells[][].value` |
|
|
131
|
+
| `+cells-search` | `data.total_matches`、`data.matches[].address` |
|
|
132
|
+
| `+sheet-create` / `+sheet-copy` | 新子表 id 在 `data.sheet_id` |
|
|
133
|
+
| `+sheet-rename` / `+sheet-hide` | **只返回 `data.revision`**,要确认结果需回读 `+workbook-info`(`sheet_name`、`is_hidden`) |
|
|
134
|
+
| `+dim-freeze` | `data.frozen_rows`、`data.frozen_columns` |
|
|
135
|
+
|
|
136
|
+
### 3. `+update-sheet` 的一次调用要拆成多次
|
|
137
|
+
|
|
138
|
+
旧命令在一次调用里同时设置标题、隐藏态和冻结行列;新命令按意图拆开,需要分别调用
|
|
139
|
+
`+sheet-rename`、`+sheet-hide` / `+sheet-unhide`、`+dim-freeze`。
|
|
140
|
+
|
|
141
|
+
注意 `+dim-freeze` 是**整份冻结状态覆盖**:`--rows` 与 `--cols` 一起表达完整状态,没写的那个轴会变成未冻结。
|
|
142
|
+
|
|
143
|
+
### 4. 底层接口换了
|
|
144
|
+
|
|
145
|
+
子表增删改查从 `sheets/v2/spreadsheets/{token}/sheets_batch_update` 换成了
|
|
146
|
+
`sheet_ai/v2/spreadsheets/{token}/tools/invoke_write`(`modify_workbook_structure`)。
|
|
147
|
+
只有直接断言过 HTTP 请求体的调用方需要关心这条。
|
|
148
|
+
|
|
149
|
+
## 三、找不到对应命令时
|
|
150
|
+
|
|
151
|
+
`lark-cli sheets --help` 列出全部当前命令;单个命令的 flag 与示例用 `lark-cli sheets <命令> --help`。
|
|
152
|
+
按任务选命令的决策表见 [SKILL.md](../SKILL.md)。
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
| 快速查看纯值数据、批量处理 | `+csv-get` | 对话上下文 | 返回 CSV 文本(每行带 `[row=N]` 前缀);大表请按 `--range` 行窗口分批读(截断时看 `has_more`) |
|
|
25
25
|
| 按列类型结构化读出(喂 DataFrame / round-trip 回 `+table-put`) | `+table-get` | 对话上下文 | 返回 typed 协议(`columns:[列名]` + `data` + `dtypes`/`formats` + `range`),输出形状对齐 pandas split;可一行 `pd.DataFrame(sheet["data"], columns=sheet["columns"]).astype(sheet["dtypes"])` 还原 DataFrame,或直接 round-trip 回 `+table-put`。不带 `--range` 时读**完整 used range**(跨过表中部空行 / 空列),每个子表回传读取范围 `range`;被 `max_chars` 裁掉时**该子表**带 `truncated: true` 与 `truncation_warning`,预算耗尽导致后续整表未读时**顶层**也带同组字段,`--output-path` 落盘模式另看 stdout 回执的 `complete` / `truncated`——**先看截断字段再用数据;三层都没报也不等于逻辑读全**,仍要用返回数据实际行数、关键末行与源数据交叉核对(详见下文)。注意这与下文 `current_region` "遇表中部空行截断"不矛盾:`+table-get` 读的是子表物理 used range(飞书记录的已用矩形,含中间空行),`current_region` 是从锚点连通扩展、遇整行空行就断 |
|
|
26
26
|
| 查看公式、样式、批注、数据验证 | `+cells-get` | 对话上下文 | 返回单元格完整信息,token 开销较大 |
|
|
27
|
-
|
|
|
27
|
+
| 查看某区域的下拉框(数据验证)配置 | `+dropdown-get` | 对话上下文 | 返回该 A1 范围的下拉选项、多选开关和胶囊配色 |
|
|
28
28
|
|
|
29
29
|
**选择原则**:
|
|
30
30
|
- 只看值或做数据处理 → `+csv-get`;大表分批读取,避免一次拉全表撑爆上下文
|
|
31
31
|
- 要按列类型结构化读出(喂 DataFrame / round-trip 回 `+table-put`)→ `+table-get`
|
|
32
32
|
- 需要公式/样式/批注 → `+cells-get`
|
|
33
|
-
-
|
|
33
|
+
- 查看某区域下拉框的选项、多选开关或胶囊配色 → `+dropdown-get`
|
|
34
34
|
|
|
35
35
|
## 读表理解脚本(Agent 优先入口)
|
|
36
36
|
|
|
@@ -193,14 +193,38 @@ Step 2: `+styles-put` — 对 A2:A100 声明统一的 fill + border 样式
|
|
|
193
193
|
|
|
194
194
|
两个 flag **必须传一个、且只能传一个**——同时传或都不传,CLI 会立刻报错。`--source-range` 用 A1 + sheet 前缀写法(如 `'Sheet1'!T1:T3`,sheet 名按 A1 标准单引号包裹),可以指同 sheet 也可以指其它 sheet(如 `'Refs'!A1:A10`)。
|
|
195
195
|
|
|
196
|
-
###
|
|
196
|
+
### 多选下拉:验证规则与选中值是两层数据
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
`+dropdown-set --multiple` 只把目标单元格的验证规则设为“允许多选”,**不会写入当前选中值**。后续用 `+cells-set` 填充多选结果时,必须把每个选项写成 `multiple_values` 数组项;不要把多个选项用逗号拼成一个普通 `value`,否则整串会被当成单值并触发数据验证失败。
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# 先创建允许多选的下拉规则
|
|
202
|
+
lark-cli sheets +dropdown-set \
|
|
203
|
+
--spreadsheet-token shtXXX --sheet-id "$SID" \
|
|
204
|
+
--range "E2:E15" \
|
|
205
|
+
--options '["A","B","C","D"]' \
|
|
206
|
+
--multiple
|
|
207
|
+
|
|
208
|
+
# 再向 E6 写入 3 个选中值
|
|
209
|
+
lark-cli sheets +cells-set \
|
|
210
|
+
--spreadsheet-token shtXXX --sheet-id "$SID" \
|
|
211
|
+
--range "E6" \
|
|
212
|
+
--cells '[[{"multiple_values":[{"value":"A"},{"value":"B"},{"value":"C"}]}]]'
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 配色:新建默认用内置色板,更新保留已有配色
|
|
216
|
+
|
|
217
|
+
下拉**默认带胶囊高亮**——新建时不传 `--highlight` / `--colors`,所有选项按内置 10 色色板循环上色,跟 UI 手动配下拉的默认行为对齐。只有用户明确指定自定义颜色,或选项具有清晰的语义配色(如状态、风险、优先级,且颜色有助于理解)时才传 `--colors`。
|
|
218
|
+
|
|
219
|
+
下拉胶囊文字默认是黑色。自定义颜色时应使用**浅色、低饱和度背景**,避免鲜艳或偏深的色值影响可读性。
|
|
220
|
+
|
|
221
|
+
`+dropdown-update` 会重写整条验证规则。若用户没有要求重置已有配色,先用 `+dropdown-get` 回读,并把现有 `highlight_colors` 作为 `--colors` 传回;省略会按内置色板重建。
|
|
199
222
|
|
|
200
223
|
| 想要的效果 | 怎么传 |
|
|
201
224
|
|---|---|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
225
|
+
| 新建时使用默认色板 | 都不传 `--highlight` / `--colors` |
|
|
226
|
+
| 更新时保留已有配色 | 先 `+dropdown-get` 回读,再将 `highlight_colors` 作为 `--colors` 传回 |
|
|
227
|
+
| 用户明确要求或选项有语义配色 | 只传浅色、低饱和度的 `--colors '["#hex",...]'`(不需要再传 `--highlight`) |
|
|
204
228
|
| 纯白下拉、不要高亮 | 传 `--highlight=false`(注意 `=false` 不能省,单写 `--highlight` 在 cobra 里等价于 true) |
|
|
205
229
|
|
|
206
230
|
`--colors` 长度**可以短于**选项数(list 模式短于 `--options` 长度,listFromRange 模式短于 `--source-range` 的单元格数),未指定的选项按内置色板循环补色;但**不能长于**——CLI 在 Validate 阶段就会拦截,错误形如 `--colors length (4) must not exceed dropdown source size (3)`。
|
|
@@ -211,36 +235,35 @@ Step 2: `+styles-put` — 对 A2:A100 声明统一的 fill + border 样式
|
|
|
211
235
|
|
|
212
236
|
**`--options` 模式 — 默认色板(最常见)**:
|
|
213
237
|
|
|
214
|
-
```
|
|
238
|
+
```bash
|
|
215
239
|
lark-cli sheets +dropdown-set \
|
|
216
240
|
--url https://... --sheet-id <id> \
|
|
217
241
|
--range A2:A100 \
|
|
218
242
|
--options '["待开始","进行中","已完成","已取消"]'
|
|
219
243
|
```
|
|
220
244
|
|
|
221
|
-
|
|
245
|
+
**用户明确要求语义配色时**:
|
|
222
246
|
|
|
223
|
-
```
|
|
247
|
+
```bash
|
|
224
248
|
lark-cli sheets +dropdown-set \
|
|
225
249
|
--url https://... --sheet-id <id> \
|
|
226
250
|
--range A2:A100 \
|
|
227
|
-
--options '["待开始","进行中","已完成"
|
|
228
|
-
--colors '["#
|
|
251
|
+
--options '["待开始","进行中","已完成"]' \
|
|
252
|
+
--colors '["#E8F3FF","#FFF3D6","#E8F8E8"]'
|
|
229
253
|
```
|
|
230
254
|
|
|
231
255
|
**`--source-range` 模式**(先在 `'Sheet1'!T1:T3` 维护「男/女/保密」三行,再让 `B2:B21` 引用它):
|
|
232
256
|
|
|
233
|
-
```
|
|
257
|
+
```bash
|
|
234
258
|
lark-cli sheets +dropdown-set \
|
|
235
259
|
--url https://... --sheet-id <id> \
|
|
236
260
|
--range B2:B21 \
|
|
237
|
-
--source-range ''\''Sheet1'\''!T1:T3'
|
|
238
|
-
--colors '["#cce8ff","#ffd6e7","#e6e6e6"]'
|
|
261
|
+
--source-range ''\''Sheet1'\''!T1:T3'
|
|
239
262
|
```
|
|
240
263
|
|
|
241
264
|
**纯白下拉**(明确告诉用户"不要彩色"时才用):
|
|
242
265
|
|
|
243
|
-
```
|
|
266
|
+
```bash
|
|
244
267
|
lark-cli sheets +dropdown-set \
|
|
245
268
|
--url https://... --sheet-id <id> \
|
|
246
269
|
--range A2:A100 \
|
|
@@ -252,7 +275,7 @@ lark-cli sheets +dropdown-set \
|
|
|
252
275
|
>
|
|
253
276
|
> ⚠️ **`--ranges` 类批量 flag 的 sheet 前缀必须「裸写」**——`+cells-batch-clear` / `+dropdown-update` / `+dropdown-delete` 的 `--ranges` 解析器不接受引号:表名含点或空格(如 `2025.9`、`一月份`)也直接写 `2025.9!A1`,写成 `'2025.9'!A1` 会被当成表名一部分、报 `sheet not found`。**但 `--source-range`、透视表 `--source`、`--range` 走 A1 标准**:sheet 名带单引号(如 `'Sheet1'!A1:B2`)是标准写法、裸写也接受,回读统一返回带引号形式——别把 `--ranges` 的裸写要求套到这些 flag 上。
|
|
254
277
|
|
|
255
|
-
`+dropdown-update`(多 range
|
|
278
|
+
`+dropdown-update`(多 range 批量更新)的目标 `--ranges` 是 JSON 数组(每项带 sheet 前缀),同一份选项 + 配色应用到所有 range。它会替换完整验证规则;需要保留现有配色时,按上文先回读并透传 `--colors`。
|
|
256
279
|
|
|
257
280
|
## Shortcuts
|
|
258
281
|
|
|
@@ -274,7 +297,7 @@ _公共四件套 · 系统:`--dry-run`_
|
|
|
274
297
|
| Flag | Type | 必填 | 说明 |
|
|
275
298
|
| --- | --- | --- | --- |
|
|
276
299
|
| `--range` | string | xor | 写入区域(A1 格式)。与 `--writes` 二选一(单区域用 --range+--cells,多区域用 --writes) |
|
|
277
|
-
| `--cells` | string + File + Stdin(复合 JSON) | xor | JSON:2D 数组 `[[{cell},...],...]`,维度与 `--range` 完全一致;每个 cell 可含 `value` / `formula` / `cell_styles` / `note` / `rich_text`(含 `type="embed-image"`
|
|
300
|
+
| `--cells` | string + File + Stdin(复合 JSON) | xor | JSON:2D 数组 `[[{cell},...],...]`,维度与 `--range` 完全一致;每个 cell 可含 `value` / `formula` / `multiple_values` / `cell_styles` / `note` / `rich_text`(含 `type="embed-image"` 单元格嵌图)等。向启用多选的下拉单元格写入选中值时,必须用 `multiple_values:[{"value":...}]`,不要把多个选项用逗号拼成一个 `value`;完整字段跑 `--print-schema` |
|
|
278
301
|
| `--writes` | string + File + Stdin(复合 JSON) | xor | 多区域写入 JSON 数组(最多 100 项),每项 `{sheet_name\|sheet_id, range, cells}`——**sheet 定位必须写在每项里**(与 +batch-update 子操作、+styles-put 项同惯例,不认顶层 --sheet-name),cells 结构同 `--cells`(二维数组,可逐格带 cell_styles/border_styles)。整批展开为**单次批量提交**(fail-fast,失败后先回读再补发),支持跨 sheet;典型场景:批量修复散布多处的公式、跨表同构写入——不要为此拼 +batch-update 的 --operations。与 `--range`+`--cells` 二选一;范围级统一样式不在此做,写完接 +styles-put |
|
|
279
302
|
| `--allow-overwrite` | bool | optional | 允许覆盖非空 cell(默认 true);设为 false 时遇非空 cell 报错 |
|
|
280
303
|
| `--max-cells` | int | optional | 防爆,默认 50000(隐藏 flag:不在 `--help` 列出,但可正常传入) |
|
|
@@ -318,8 +341,8 @@ _公共四件套 · 系统:`--dry-run`_
|
|
|
318
341
|
| --- | --- | --- | --- |
|
|
319
342
|
| `--range` | string | required | 目标范围(A1 格式,如 `A2:A100`) |
|
|
320
343
|
| `--options` | string + File + Stdin(复合 JSON) | xor | 下拉选项 JSON 数组,例如 `["opt1","opt2"]`。服务端不限制选项数量,也不限制单个选项长度;含逗号的选项可以接受(写入时会自动转义)。大量选项建议改用 `--source-range`。 |
|
|
321
|
-
| `--colors` | string + File + Stdin(简单 JSON) | optional | 下拉胶囊背景色,RGB hex
|
|
322
|
-
| `--multiple` | bool | optional | 启用多选;默认 `false` |
|
|
344
|
+
| `--colors` | string + File + Stdin(简单 JSON) | optional | 下拉胶囊背景色,RGB hex 数组。新建时默认不要传:省略即使用内置 10 色色板;仅在用户明确要求或选项有清晰语义配色时传。胶囊文字默认黑色,应选浅色、低饱和度背景。长度可短不可长——超长 Validate 拦截(`--colors length (N) must not exceed dropdown source size (M)`),未指定项按内置色板循环补色。单独传即生效;`--highlight=false` 时被忽略。 |
|
|
345
|
+
| `--multiple` | bool | optional | 启用多选;默认 `false`。本 flag 只设置验证规则,不会写入选中值;后续用 `+cells-set` 写值时必须传 `multiple_values` 数组,不要传逗号拼接的 `value` |
|
|
323
346
|
| `--highlight` | bool | optional | 下拉胶囊背景色高亮开关。**不传 = 开**(按内置 10 色色板循环上色);`--highlight=false` 关闭得到纯白下拉。配色用 `--colors` 覆盖。 |
|
|
324
347
|
| `--source-range` | string | xor | listFromRange 模式的下拉源 range,A1 表示法 + sheet 前缀(如 `'Sheet1'!T1:T3`)。映射到 server `data_validation.range`,搭配 server `data_validation.type='listFromRange'` 自动生效。跟 `--options` 二选一:传 `--options` 走 inline 列表(type=list),传本 flag 走 range 引用(type=listFromRange)。`--colors` 长度规则不变(≤ 源 range 单元格数),`--highlight` / `--multiple` 行为相同。当 `--highlight` 开启且 source 覆盖单元格数超过 2000 时,服务端会将该下拉判为 option-error(这是不支持的组合);CLI 会在返回结果的 `data.warnings` 中给出 warning。如需取消,传 `--highlight=false`。 |
|
|
325
348
|
|