Files
EP-Hub-Skill/.agents/skills/dingtalk-misc/references/sheet/sheet-batch-operations.md
T
2026-09-02 11:44:52 +08:00

56 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sheet 批量原子操作
## 使用边界
batch-update 用于多个相互依赖且已确认参数的原子写;range batch-clear 用于跨工作表批量清空。不要把独立命令能完成的一次写拆成 batch,也不要为了减少调用把不相关风险混在一起。
当前 batch-update 只支持以下精确 toolName`range clear``range update``merge-cells``unmerge-cells``range fill``range copy-to``add-dimension``delete-dimension``move-dimension``update-dimension``group-dimension``ungroup-dimension``set-dropdown``delete-dropdown``csv-put``delete-float-image`
以下不进入 batch-updateset-style/batch-set-style、table-put/table-get、range read/csv-get、对象 create/update/list、嵌套 batch、需要立即折叠的 group-dimension。样式批量使用独立 range batch-set-style;结构化 table 独立写并独立回读;折叠分组用独立 group-dimension --group-state fold。不要把相似的 CLI leaf 名称猜成受支持 toolName。
## 批量清空
dws sheet range batch-clear --node <NODE_ID> --ranges '["Sheet1!A1:B3","Sheet2!C1:D5"]' --type content --format json
每个范围必须带工作表前缀。type 为 content、format 或 allall 会同时删除值和格式,属于高风险操作。执行前读最小范围并展示目标,获得明确确认后才执行破坏性清空。默认原子:任一区域失败整批回滚。
## batch-update 结构
dws sheet batch-update --node <NODE_ID> --operations '[
{"toolName":"range clear","input":{"sheet-id":"Sheet1","range":"A1:B3","type":"content"}},
{"toolName":"range update","input":{"sheet-id":"Sheet1","range":"A1","values":[[{"type":"text","text":"hello"}]]}},
{"toolName":"merge-cells","input":{"sheet-id":"Sheet1","range":"A1:B1","merge-type":"mergeAll"}}
]' --format json
每项形如 {"toolName": "...", "input": {...}}
- toolName 必须逐字取上面的支持清单,不接受 MCP RPC 名或缩写。
- input 键使用 CLI flag 名去掉 --,例如 sheet-id、start-index、merge-type。
- node 只在批次顶层传,不在子操作中重复。
- 子操作按数组顺序执行;依赖前项产生的新 ID 的对象不适合放进同一静态批次。
- 不确定某个 leaf 的字段时只读该 leaf compact Schema,不读取所有 Help。
set-dropdown 的 batch input 仍遵循精确互斥:inline 用 options(颜色只能写 options[].color);SourceRange 用 source-sheet-id 与 source-range 且二者必须同时出现。options 与 source-range 必须且只能选一个;顶层 colors/source-colors 不支持,SourceRange 颜色也不支持。
默认不加 --continue-on-error,这样任一失败整批回滚。只有用户明确接受部分成功时才加;此时顶层请求可能成功但子项仍有失败,必须按输入索引逐项解析状态、错误和实际结果,失败项不能被成功项掩盖。
## 预检与安全
批次发送前检查:所有 sheetId 来自当前任务;范围无意外重叠;操作顺序满足依赖;删除/清空/移动影响已确认;预计操作数与数组长度一致。不要用 validate 成功替代真实执行,也不要在失败后盲目重发整批。
超时或响应不确定时先回读目标状态:
- 原子模式:判断整批是否已落地,再决定是否重试。
- continue-on-error:只为已证明缺失且可安全重试的项目构造新批次。
- 非幂等操作如 append、insert、move 未确认状态前禁止重放。
## 写后验证
批次成功后按结果类型合并验证,避免逐操作全表读取:
- 值:一次读取覆盖所有受影响值的最小范围;
- 样式/合并/行列:info 或样式读取;
- dropdown/对象:对应 list/get。
预期条数、结果条数或关键状态不一致即失败。只读校验可做有界退避;不得通过重复写“碰碰运气”。最终说明原子/部分模式、成功项、失败项和已验证范围。