@wecom/wecom-openclaw-plugin 2026.9.15 → 2026.10.19-beta.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.
Files changed (24) hide show
  1. package/package.json +2 -2
  2. package/skills/wecomcli-sheet/SKILL.md +64 -107
  3. package/skills/wecomcli-sheet/references/sheet-conditional-formatting.md +211 -0
  4. package/skills/wecomcli-sheet/references/sheet-filter.md +187 -0
  5. package/skills/wecomcli-sheet/references/sheet-float-image.md +248 -0
  6. package/skills/wecomcli-sheet/references/sheet-formulas.md +73 -0
  7. package/skills/wecomcli-sheet/references/sheet-history.md +125 -0
  8. package/skills/wecomcli-sheet/references/sheet-protection.md +180 -0
  9. package/skills/wecomcli-sheet/references/sheet-range-operations.md +323 -0
  10. package/skills/wecomcli-sheet/references/sheet-read-data.md +153 -0
  11. package/skills/wecomcli-sheet/references/sheet-search-replace.md +111 -0
  12. package/skills/wecomcli-sheet/references/sheet-structure-operations.md +416 -0
  13. package/skills/wecomcli-sheet/references/sheet-style.md +246 -0
  14. package/skills/wecomcli-sheet/references/sheet-validation.md +243 -0
  15. package/skills/wecomcli-sheet/references/sheet-workbook.md +271 -0
  16. package/skills/wecomcli-sheet/references/sheet-write-cells.md +332 -0
  17. package/skills/wecomcli-sheet/references/xlsx-process.md +328 -0
  18. package/skills/wecomcli-sheet/scripts/collect.py +868 -0
  19. package/skills/wecomcli-sheet/scripts/recalc.py +403 -0
  20. package/skills/wecomcli-sheet/references/sheet-contents-update.md +0 -49
  21. package/skills/wecomcli-sheet/references/sheet-ranges-get.md +0 -47
  22. package/skills/wecomcli-sheet/references/sheet-rows-append.md +0 -47
  23. package/skills/wecomcli-sheet/references/sheet-subsheets-add.md +0 -28
  24. package/skills/wecomcli-sheet/references/sheet-subsheets-delete.md +0 -22
@@ -0,0 +1,243 @@
1
+ # 表格数据验证管理
2
+
3
+ 读取、设置、更新或清除指定区域的数据验证规则。数据验证用于限制单元格可输入的值,例如单选下拉、多选下拉、整数范围、日期范围、时间范围或文本长度。
4
+
5
+ ## 使用场景
6
+
7
+ | 操作需求 | CLI | 说明 |
8
+ | --- | --- | --- |
9
+ | 读取数据验证 | `sheet validation list` | 查询指定区域现有的数据验证设置 |
10
+ | 首次设置或清除数据验证 | `sheet validation set` | 给没有规则的区域创建规则,或用 `validation_type=none` 清除规则 |
11
+ | 修改已有数据验证 | `sheet validation update` | 仅在目标区域已有数据验证规则时使用 |
12
+ | 删除数据验证 | `sheet validation delete` | 兼容删除指定区域的数据验证规则;清除规则优先用 `validation set` |
13
+
14
+ ## 执行路径
15
+
16
+ 1. 先用 `validation list` 查看目标区域是否已有数据验证规则。
17
+ 2. 没有规则时,用 `validation set` 首次设置。
18
+ 3. 已有规则时,用 `validation update` 修改类型、条件或选项。
19
+ 4. 用户要求清除数据验证、去掉下拉时,用 `validation set` 并传 `validation_type=none`。
20
+
21
+ ## `wecom-cli sheet validation list`
22
+
23
+ 读取指定区域的数据验证设置。
24
+
25
+ ### 命令
26
+
27
+ 使用 wecom-cli 工具按照下面格式调用
28
+
29
+ ```
30
+ wecom-cli sheet validation list --json '<JSON>'
31
+ ```
32
+
33
+ ### 入参
34
+
35
+ | 字段 | 类型 | 必填 | 说明 |
36
+ | --- | --- | --- | --- |
37
+ | `docid` | `string` | 是 | 工作簿定位,支持文档 URL 或 docid |
38
+ | `sheet` | `string` | 是 | 子表 ID 或名称 |
39
+ | `range` | `string` | 是 | 要查询数据验证的带行号 A1 区域,如 `A2:A100`;不支持只写列字母 |
40
+
41
+ ### 出参
42
+
43
+ | 字段 | 类型 | 说明 |
44
+ | --- | --- | --- |
45
+ | `items` | `ValidationItem[]` | 数据验证规则列表;无规则时为空数组 |
46
+
47
+ **`ValidationItem` 结构:**
48
+
49
+ | 字段 | 类型 | 说明 |
50
+ | --- | --- | --- |
51
+ | `validation_type` | `string` | 数据验证类型,如 `list` / `multiple_list` / `whole` |
52
+ | `ranges` | `string[]` | 应用该规则的 A1 区域列表 |
53
+ | `cell_count` | `int32` | 应用该规则的单元格数 |
54
+ | `options` | `string[]` | 下拉类数据验证的纯文本选项;条件类规则没有该字段 |
55
+ | `has_unreadable_condition` | `bool` | 条件类规则通常为 `true`,表示条件存在但不可从 list 回包读出 |
56
+
57
+ ## `wecom-cli sheet validation set`
58
+
59
+ 首次设置或清除指定区域的数据验证规则。目标区域没有数据验证规则时,必须用本命令创建规则;不要直接调用 `validation update`。
60
+
61
+ ### 命令
62
+
63
+ 使用 wecom-cli 工具按照下面格式调用
64
+
65
+ ```
66
+ wecom-cli sheet validation set --json '<JSON>'
67
+ ```
68
+
69
+ ### 入参
70
+
71
+ | 字段 | 类型 | 必填 | 说明 |
72
+ | --- | --- | --- | --- |
73
+ | `docid` | `string` | 是 | 工作簿定位,支持文档 URL 或 docid |
74
+ | `sheet` | `string` | 是 | 子表 ID 或名称 |
75
+ | `range` | `string` | 是 | 目标区域;区域模式写 `B2:B100`,整列模式写 `A` |
76
+ | `validation_type` | `string` | 是 | 数据验证类型;见下方类型表。清除规则时传 `none` |
77
+ | `styled_options` | `object[]` | 下拉类必填 | 下拉选项;用于 `list` / `multiple_list`,每项可只填文本,也可带颜色 |
78
+ | `strict` | `bool` | 否 | 下拉类是否仅允许输入选项内的值 |
79
+ | `op` | `string` | 条件类必填 | 比较运算符;用于 `whole` / `decimal` / `date` / `time` / `text_length` |
80
+ | `formula1` | `string` | 条件类必填 | 第一个比较值,只接受字面量,不支持公式或单元格引用 |
81
+ | `formula2` | `string` | 范围比较必填 | 第二个比较值;仅 `op=btw` / `op=not_btw` 时使用 |
82
+ | `ignore_rows` | `int32` | 否 | 整列模式下忽略表头前 N 行,如 `1` 表示跳过第 1 行;区域模式不用传 |
83
+ | `dry_run` | `bool` | 否 | 预览不落盘,返回 `applied=false` |
84
+ | `yes` | `bool` | 落盘时必填 | 确认执行设置;`dry_run=true` 时不用传 |
85
+
86
+ **`styled_options` 元素结构:**
87
+
88
+ | 字段 | 类型 | 必填 | 说明 |
89
+ | --- | --- | --- | --- |
90
+ | `text` | `string` | 是 | 选项文本 |
91
+ | `bg_color` | `string` | 否 | 选项背景色,格式 `#RRGGBB` |
92
+ | `text_color` | `string` | 否 | 选项文本颜色,格式 `#RRGGBB` |
93
+
94
+ ### 支持的 `validation_type`
95
+
96
+ | 类型 | 含义 | 必填字段 | 禁止字段 |
97
+ | --- | --- | --- | --- |
98
+ | `list` | 单选下拉 | 非空 `styled_options` | `op` / `formula1` / `formula2` |
99
+ | `multiple_list` | 多选下拉 | 非空 `styled_options` | `op` / `formula1` / `formula2` |
100
+ | `whole` | 整数校验 | `op` / `formula1`,范围比较还要 `formula2` | `styled_options` |
101
+ | `decimal` | 小数校验 | `op` / `formula1`,范围比较还要 `formula2` | `styled_options` |
102
+ | `date` | 日期校验 | `op` / `formula1`,范围比较还要 `formula2` | `styled_options` |
103
+ | `time` | 时间校验 | `op` / `formula1`,范围比较还要 `formula2` | `styled_options` |
104
+ | `text_length` | 文本长度校验 | `op` / `formula1`,范围比较还要 `formula2` | `styled_options` |
105
+ | `none` | 清除数据验证 | 无 | `styled_options` / `strict` / `op` / `formula1` / `formula2` |
106
+
107
+ ### 支持的 `op`
108
+
109
+ | `op` | 含义 | 参数要求 |
110
+ | --- | --- | --- |
111
+ | `btw` | 在范围内 | 必须传 `formula1` 和 `formula2` |
112
+ | `not_btw` | 不在范围内 | 必须传 `formula1` 和 `formula2` |
113
+ | `eq` | 等于 | 只传 `formula1` |
114
+ | `ne` | 不等于 | 只传 `formula1` |
115
+ | `gt` | 大于 | 只传 `formula1` |
116
+ | `lt` | 小于 | 只传 `formula1` |
117
+ | `gte` | 大于等于 | 只传 `formula1` |
118
+ | `lte` | 小于等于 | 只传 `formula1` |
119
+
120
+ ### 出参
121
+
122
+ | 字段 | 类型 | 说明 |
123
+ | --- | --- | --- |
124
+ | `range` | `string` | 实际应用的区域;区域模式如 `B2:B100`,整列模式如 `A` |
125
+ | `applied` | `bool` | 是否已落盘执行;`dry_run=true` 时为 `false` |
126
+ | `validation_type` | `string` | 实际生效的数据验证类型 |
127
+
128
+ ### 示例:设置单选下拉
129
+
130
+ ```
131
+ wecom-cli sheet validation set --json '{
132
+ "docid": "e3_ABC123",
133
+ "sheet": "销售",
134
+ "range": "A2:A100",
135
+ "validation_type": "list",
136
+ "styled_options": [
137
+ {"text": "待处理"},
138
+ {"text": "进行中"},
139
+ {"text": "已完成"}
140
+ ],
141
+ "strict": true,
142
+ "yes": true
143
+ }'
144
+ ```
145
+
146
+ ### 示例:设置整数范围
147
+
148
+ ```
149
+ wecom-cli sheet validation set --json '{
150
+ "docid": "e3_ABC123",
151
+ "sheet": "销售",
152
+ "range": "D2:D100",
153
+ "validation_type": "whole",
154
+ "op": "btw",
155
+ "formula1": "60",
156
+ "formula2": "90",
157
+ "yes": true
158
+ }'
159
+ ```
160
+ ## `wecom-cli sheet validation update`
161
+
162
+ 修改已有区域的数据验证规则。调用前必须确认目标区域已经存在数据验证规则;如果 `validation list` 查不到规则,先用 `validation set` 创建。
163
+
164
+ ### 命令
165
+
166
+ 使用 wecom-cli 工具按照下面格式调用
167
+
168
+ ```
169
+ wecom-cli sheet validation update --json '<JSON>'
170
+ ```
171
+
172
+ ### 入参
173
+
174
+ `validation update` 的入参和 `validation set` 基本一致,但清除规则不要用 `update`,应改用 `validation set` 且传 `validation_type=none`。
175
+
176
+ | 字段 | 类型 | 必填 | 说明 |
177
+ | --- | --- | --- | --- |
178
+ | `docid` | `string` | 是 | 工作簿定位,支持文档 URL 或 docid |
179
+ | `sheet` | `string` | 是 | 子表 ID 或名称 |
180
+ | `range` | `string` | 是 | 目标区域;区域模式写 `B2:B100`,整列模式写 `A` |
181
+ | `validation_type` | `string` | 是 | 新数据验证类型,见 `validation set` 的类型表;不要传 `none` |
182
+ | `styled_options` | `object[]` | 否 | 下拉选项;用于 `list` / `multiple_list`,每项可只填文本,也可带颜色 |
183
+ | `strict` | `bool` | 否 | 下拉类是否仅允许输入选项内的值 |
184
+ | `op` | `string` | 条件类必填 | 比较运算符;用于 `whole` / `decimal` / `date` / `time` / `text_length` |
185
+ | `formula1` | `string` | 条件类必填 | 第一个比较值,只接受字面量,不支持公式或单元格引用 |
186
+ | `formula2` | `string` | 范围比较必填 | 第二个比较值;仅 `op=btw` / `op=not_btw` 时使用 |
187
+ | `ignore_rows` | `int32` | 否 | 整列模式下忽略表头前 N 行,如 `1` 表示跳过第 1 行;区域模式不用传 |
188
+ | `dry_run` | `bool` | 否 | 预览不落盘,返回 `applied=false` |
189
+ | `yes` | `bool` | 落盘时必填 | 确认执行更新;`dry_run=true` 时不用传 |
190
+
191
+ ### 出参
192
+
193
+ | 字段 | 类型 | 说明 |
194
+ | --- | --- | --- |
195
+ | `range` | `string` | 实际更新的区域;区域模式如 `B2:B100`,整列模式如 `A` |
196
+ | `applied` | `bool` | 是否已落盘执行;`dry_run=true` 时为 `false` |
197
+ | `validation_type` | `string` | 实际应用的数据验证类型 |
198
+
199
+ ## `wecom-cli sheet validation delete`
200
+
201
+ 删除指定区域的数据验证规则。清除下拉或清除普通数据验证时,优先使用 `validation set` 并传 `validation_type=none`。
202
+
203
+ ### 命令
204
+
205
+ 使用 wecom-cli 工具按照下面格式调用
206
+
207
+ ```
208
+ wecom-cli sheet validation delete --json '<JSON>'
209
+ ```
210
+
211
+ ### 入参
212
+
213
+ | 字段 | 类型 | 必填 | 说明 |
214
+ | --- | --- | --- | --- |
215
+ | `docid` | `string` | 是 | 工作簿定位,支持文档 URL 或 docid |
216
+ | `sheet` | `string` | 是 | 子表 ID 或名称 |
217
+ | `range` | `string` | 是 | 要删除数据验证的 A1 区域,如 `A2:A100` |
218
+ | `yes` | `bool` | 否 | 确认执行删除;兼容旧调用时可省略 |
219
+
220
+ ### 出参
221
+
222
+ | 字段 | 类型 | 说明 |
223
+ | --- | --- | --- |
224
+ | `range` | `string` | 实际操作的区域 A1 |
225
+ | `applied` | `bool` | 是否成功应用删除操作 |
226
+
227
+ ## 使用约束
228
+
229
+ - 执行设置、更新或清除前,优先用 `validation list` 查看目标区域现有规则。
230
+ - 目标区域没有数据验证规则时,用 `validation set`;目标区域已有规则且要修改时,用 `validation update`。直接对无规则区域调用 `validation update` 会报错,提示改用 set。
231
+ - 清除数据验证规则时,优先用 `validation set` 并传 `validation_type=none`;`validation delete` 也能删除规则,但返回中没有 `validation_type`。
232
+ - `range` 使用纯 A1 写法,不带子表名;子表通过 `sheet` 单独定位。
233
+ - `validation set` / `validation update` 的区域模式用于精确单元格范围,如 `B2:B100`;整列模式用于让新增行继承规则,如 `B`。
234
+ - `validation list` 只接受带行号区域;整列设置后如需复查,用实际数据区域查询,如 `B2:B100`。
235
+ - 整列模式需要跳过表头时传 `ignore_rows`;区域模式直接把起始行写进 `range`,不用传 `ignore_rows`。
236
+ - `list` / `multiple_list` 必须提供非空 `styled_options`;不要在设置或更新时传 `options`。
237
+ - `styled_options` 可以设置带颜色的选项,但 `validation list` 只返回纯文本 `options`,不返回颜色信息。
238
+ - `strict` 可以随下拉类规则传入,但 `validation list` 不返回 `strict`。
239
+ - 条件类规则必须显式提供完整条件:`op`、`formula1`,以及范围比较所需的 `formula2`。条件类规则的 `validation list` 回包不返回 `op` / `formula1` / `formula2`,只能看到 `has_unreadable_condition=true`。
240
+ - `formula1` / `formula2` 只写字面量;不要写公式、单元格引用或命名区域。
241
+ - 单边比较如 `gt` / `lt` / `gte` / `lte` / `eq` / `ne` 不要传 `formula2`。
242
+ - 设置规则不会自动修正已有不合规数据;如果任务要求保证历史数据合规,设置后还需要读取并复核已有值。
243
+ - 落盘设置或更新必须传 `yes=true`;`dry_run=true` 时不用传 `yes`,且不会落盘。
@@ -0,0 +1,271 @@
1
+ # 工作簿与子表管理
2
+
3
+ 从零新建一篇企微在线表格,导入本地 CSV / Excel 文件为企微在线表格,读取整个在线表格工作簿,并管理其中子表的新增、删除、重命名、复制和顺序。
4
+
5
+ | 命令 | 风险 | 用途 |
6
+ |---------------------------------|---|---|
7
+ | `wecom-cli doc create` | 创建 | 从零新建一篇在线表格 |
8
+ | `wecom-cli doc import` | 文件写入 | 导入本地文件为在线表格 |
9
+ | `wecom-cli sheet workbook get` | 只读 | 获取工作簿中的全部子表 |
10
+ | `wecom-cli sheet subsheets create` | 结构写入 | 新增子表 |
11
+ | `wecom-cli sheet subsheets remove` | 高风险写入 | 删除子表 |
12
+ | `wecom-cli sheet subsheets rename` | 结构写入 | 重命名子表 |
13
+ | `wecom-cli sheet subsheets copy` | 结构写入 | 复制子表 |
14
+ | `wecom-cli sheet subsheets move` | 结构写入 | 调整子表顺序 |
15
+ | `wecom-cli sheet subsheets visible` | 结构写入 | 显示或隐藏子表 |
16
+
17
+ ## 通用规则
18
+
19
+ - 结构性写入、高风险写入均支持 `dry_run`。需要预览时先传 `"dry_run":true`,确认后再正式执行。
20
+
21
+ ## 新建在线表格
22
+
23
+ 新建企微在线表格时,先按用户需求创建一个本地 `.xlsx`,完成质量校验后,再通过`doc import`导入为企微在线表格。
24
+
25
+ ### 标准流程
26
+ - 使用 `openpyxl` 创建本地 `.xlsx`。本地文件只写入子表名称、单元格值和公式,并将工作表已用区域内的所有单元格统一设置为水平居中、垂直居中。
27
+ - 导入前只校验本地 `.xlsx` 是否存在且非空、能否正常打开,以及工作表名称、数量、关键数据和公式是否正确。校验不通过时先修复本地文件,不得导入未验证产物。
28
+ - 调用下方「导入在线表格」的 `wecom-cli doc import`,把已校验的 `.xlsx` 导入为企微在线表格,并确认 `task_status` 为成功状态。
29
+ - 向用户返回企微在线表格 URL。除非用户明确要求,否则禁止返回或向用户暴露本地 `.xlsx` 中间文件。
30
+
31
+ ### 使用规则
32
+ - 新建流程适用于从零创建表格,以及用户对当前任务中刚创建的表格不满意并提出修改意见的情况;后者即使表述为“修改”,也应按新建流程重新生成。仅当操作对象是此前已存在的企微在线表格时,才使用读取、修改、追加、子表管理等在线接口,禁止重新生成 XLSX 后覆盖导入。
33
+
34
+ ## 导入在线表格
35
+
36
+ 把本地文件(`.csv` / `.xls` / `.xlsx`)导入为企微在线表格。
37
+
38
+ ### 命令
39
+
40
+ 使用 wecom-cli 工具按照下面格式调用
41
+
42
+ ```
43
+ wecom-cli doc import --json '<JSON 参数>'
44
+ ```
45
+
46
+ ### 参数
47
+
48
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
49
+ |-------------|---|---|---|-------------------------|
50
+ | `doc_type` | string | 是 | — | 导入文档类型,固定为`sheet` |
51
+ | `file_name` | string | 是 | — | 二进制文件名(含后缀),用于业务判断源文件类型 |
52
+ | `file_path` | string | 是 | — | 源文件的本地绝对路径 |
53
+ | `passwd` | string | 否 | — | Office 文件加密密码(若有) |
54
+
55
+ ### 返回
56
+
57
+ | 字段 | 类型 | 说明 |
58
+ |---|---|---|
59
+ | `docid` | string | 导入完成后的表格 ID |
60
+ | `url` | string | 导入完成后的访问链接 |
61
+ | `task_status` | string | 任务状态枚举,如 `succ` 成功 |
62
+
63
+ ## 获取工作簿信息
64
+
65
+ 列出工作簿中的全部子表,返回子表 ID、名称和行列范围,是后续子表操作的探测入口。
66
+
67
+ ### 命令
68
+
69
+ 使用 wecom-cli 工具按照下面格式调用
70
+
71
+ ```
72
+ wecom-cli sheet workbook get --json '<JSON 参数>'
73
+ ```
74
+
75
+ ### 参数
76
+
77
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
78
+ |---|---|---|---|---|
79
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
80
+
81
+ ### 返回
82
+
83
+ | 字段 | 类型 | 说明 |
84
+ |-------------------------|----------|----------------------------------------|
85
+ | `sheets` | object[] | 子表列表 |
86
+ | `sheets[].sheet_id` | string | 子表 ID |
87
+ | `sheets[].name` | string | 子表名称 |
88
+ | `sheets[].range` | string | 子表实际数据范围;空表返回 `A1:A1` |
89
+
90
+ ### 使用规则
91
+
92
+ - 工作簿内存在同名子表、用户只描述了模糊名称,或后续操作具有破坏性时,应先通过本接口拿到 `sheet_id` 再操作。
93
+ - **`A1:A1` 需读取确认**:该范围既可能表示空表,也可能表示只有 A1 单元格有内容;不得仅凭 `range` 判定为空表,应使用 `cells get` 读取 `A1:A1` 后确认。
94
+
95
+ ## 新增子表
96
+
97
+ ### 命令
98
+
99
+ 使用 wecom-cli 工具按照下面格式调用
100
+
101
+ ```
102
+ wecom-cli sheet subsheets create --json '<JSON 参数>'
103
+ ```
104
+
105
+ ### 参数
106
+
107
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
108
+ |---|---|---|---|-------------------|
109
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
110
+ | `name` | string | 否 | 引擎生成默认名 | 子表名称,长度不超过 31 个字符 |
111
+ | `position` | int | 否 | 追加到末尾 | 插入位置,1-based |
112
+ | `dry_run` | bool | 否 | `false` | `true` 时仅预览,不落盘 |
113
+
114
+ ### 返回
115
+
116
+ | 字段 | 类型 | 说明 |
117
+ |---|---|---|
118
+ | `sheet_id` | string | 新建子表 ID |
119
+ | `name` | string | 实际子表名称 |
120
+ | `position` | int | 实际插入位置,1-based |
121
+
122
+ ### 示例
123
+
124
+ ```
125
+ wecom-cli sheet subsheets create --json '{"docid":"e3_ABC123","name":"2026汇总","position":2}'
126
+ ```
127
+
128
+ ### 使用规则
129
+
130
+ - 需要空白子表时使用本接口;已有模板且需要继承结构与格式时优先使用 `sheet subsheets copy`。
131
+
132
+ ## 删除子表
133
+
134
+ ### 命令
135
+
136
+ 使用 wecom-cli 工具按照下面格式调用
137
+
138
+ ```
139
+ wecom-cli sheet subsheets remove --json '<JSON 参数>'
140
+ ```
141
+
142
+ ### 参数
143
+
144
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
145
+ |------------|---|---|---|-----------------|
146
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
147
+ | `sheet` | string | 是 | — | 待删除子表 ID |
148
+ | `yes` | bool | 是 | — | 确认执行(缺省拒绝) |
149
+ | `dry_run` | bool | 否 | `false` | `true` 时仅预览,不落盘 |
150
+
151
+ ### 返回
152
+
153
+ | 字段 | 类型 | 说明 |
154
+ |---|---|---|
155
+ | `sheet_id` | string | 已删除子表 ID |
156
+ | `name` | string | 已删除子表名称 |
157
+
158
+ ## 重命名子表
159
+
160
+ ### 命令
161
+
162
+ 使用 wecom-cli 工具按照下面格式调用
163
+
164
+ ```
165
+ wecom-cli sheet subsheets rename --json '<JSON 参数>'
166
+ ```
167
+
168
+ ### 参数
169
+
170
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
171
+ |------------|---|---|---|---|
172
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
173
+ | `sheet` | string | 是 | — | 子表 ID |
174
+ | `name` | string | 是 | — | 新名称,长度不超过 31 个字符 |
175
+ | `dry_run` | bool | 否 | `false` | `true` 时仅预览,不落盘 |
176
+
177
+ ### 返回
178
+
179
+ | 字段 | 类型 | 说明 |
180
+ |------------|---|---|
181
+ | `sheet_id` | string | 子表 ID |
182
+ | `name` | string | 重命名后的名称 |
183
+
184
+ ## 复制子表
185
+
186
+ 新复制的子表,默认放在源子表的右侧
187
+
188
+ ### 命令
189
+
190
+ 使用 wecom-cli 工具按照下面格式调用
191
+
192
+ ```
193
+ wecom-cli sheet subsheets copy --json '<JSON 参数>'
194
+ ```
195
+
196
+ ### 参数
197
+
198
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
199
+ |-------------------|---|---|---|---|
200
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
201
+ | `sheet` | string | 是 | — | 源子表 ID |
202
+ | `name` | string | 否 | 引擎生成默认名 | 副本名称 |
203
+ | `dry_run` | bool | 否 | `false` | `true` 时仅预览,不落盘 |
204
+
205
+ ### 返回
206
+
207
+ | 字段 | 类型 | 说明 |
208
+ |---|---|---|
209
+ | `sheet_id` | string | 新副本的子表 ID |
210
+
211
+ ## 移动子表顺序
212
+
213
+ ### 命令
214
+
215
+ 使用 wecom-cli 工具按照下面格式调用
216
+
217
+ ```
218
+ wecom-cli sheet subsheets move --json '<JSON 参数>'
219
+ ```
220
+
221
+ ### 参数
222
+
223
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
224
+ |------------|---|---|---|---|
225
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
226
+ | `sheet` | string | 是 | — | 子表 ID |
227
+ | `position` | int | 是 | — | 目标位置,1-based |
228
+ | `dry_run` | bool | 否 | `false` | `true` 时仅预览,不落盘 |
229
+
230
+ ## 显示或隐藏子表 — `wecom-cli sheet subsheets visible`
231
+
232
+ 设置指定子表显示或隐藏。隐藏子表不会删除内容,适合收起辅助计算表、中间过程表或暂不展示的历史表。
233
+
234
+ ### 命令
235
+
236
+ 使用 wecom-cli 工具按照下面格式调用
237
+
238
+ ```
239
+ wecom-cli sheet subsheets visible --json '<JSON 参数>'
240
+ ```
241
+
242
+ ### 参数
243
+
244
+ | 字段 | 类型 | 必填 | 默认值 | 语义 |
245
+ |---|---|---|---|---|
246
+ | `docid` | string | 是 | — | 在线表格 ID 或 URL |
247
+ | `sheet` | string | 是 | — | 子表 ID 或名称 |
248
+ | `visible` | bool | 是 | — | `true` 表示显示,`false` 表示隐藏 |
249
+ | `dry_run` | bool | 否 | `false` | `true` 时仅预览,不落盘 |
250
+
251
+ ### 返回
252
+
253
+ | 字段 | 类型 | 说明 |
254
+ |---|---|---|
255
+ | `sheet_id` | string | 子表 ID |
256
+ | `visible` | bool | 当前可见状态 |
257
+
258
+ ### 示例
259
+
260
+ ```
261
+ wecom-cli sheet subsheets visible --json '{"docid":"e3_ABC123","sheet":"销售","visible":false}'
262
+ ```
263
+
264
+ ### 使用规则
265
+
266
+ - **隐藏不是删除**:用户说“先收起来/隐藏辅助表/不要展示给使用者”时使用本命令;不要用删除子表代替隐藏。
267
+ - **先确认目标子表**:隐藏前调用 `workbook get` 获取稳定 `sheet_id`,避免隐藏错同名或相似名称子表。
268
+ - **谨慎隐藏关键表**:隐藏源数据、公式依赖表或唯一入口表前,先向用户确认影响。
269
+ - **不能隐藏最后一个可见子表**:实测隐藏最后一个可见子表会失败,错误信息为 `cannot hide the last visible sheet`。
270
+ - **dry-run 响应同形**:`dry_run:true` 的响应结构与正式执行一致,但不落盘。
271
+ - **无法只读回读**:实测 `workbook get` 的 `sheets[]` 不返回 `visible` 字段。写后只能以 `subsheets visible` 响应确认。