Switches the discovery version code bamboo -> cedar and aligns the open edition CLI with dws-wukong across communication (calendar book/acl/attendee, minutes tag, mail folder/template/contact, chat file upload, todo add-attachment, attendance transforms) and structured-office (aitable advperm/view/section/workflow/record, sheet/drive/wiki/doc) domains. Includes output-envelope parity, parse_bool/attendance_class_check_time transforms, --calendar-id support, CHANGELOG 1.0.43 and README command-index refresh. cedar config validated on pre and prod endpoints.
9.4 KiB
9.4 KiB
电子表格 (sheet) 命令参考
渐进式文档:本文件为路由层(索引 + 意图判断 + 全局约束),各命令的详细参数、示例和注意事项在 sheet/ 目录下按需加载。
适用范围
sheet 仅支持钉钉在线电子表格(contentType=ALIDOC、extension=axls)。
| 文件类型 | 处理方式 |
|---|---|
在线电子表格(axls) |
走 sheet 全部命令 |
xlsx / xls / xlsm / csv |
dws drive download --node <ID> --output <路径> 下载到本地处理,禁止调用任何 sheet 子命令 |
| 本地 xlsx 导入为在线表格 | dws drive upload --file <路径> --convert(上传并转换为在线电子表格,转换后可用 sheet 命令操作) |
| 在线表格导出为 xlsx | dws sheet export(axls → xlsx 格式转换) |
用户贴原始 alidocs URL 时必须先 probe:dws doc info --node <URL> --format json,按 链接规范 校验:
contentType=ALIDOC+extension=axls→ 继续走sheetextension=xlsx/xls/xlsm/csv→ 转dws drive download,告知用户"这是本地表格文件,已为你下载到本地处理"
URL → NODE_ID
| URL 格式 | 提取方式 |
|---|---|
.../i/nodes/{id} 或 .../i/nodes/{id}?query |
取路径末段作 NODE_ID(忽略 query) |
.../spreadsheetv2/{key}/... |
完整 URL 原样传 --node,禁止提取 path segment |
参数不确定时先 dws sheet <命令> --help。
Reference 索引
| Reference | 描述 |
|---|---|
| sheet-workbook | 管理表格文档与工作表。当用户说"创建表格"、"有哪些工作表"、"新建/重命名/隐藏/冻结/复制/删除工作表"时使用。命令:create/list/info/new/update/copy/delete-sheet |
| sheet-read-data | 读取工作表数据。当用户说"读数据"、"看表格内容"、"查看数据"时使用。推荐 csv-get(CSV 格式、token 低、防爆保护);需 value + dataValidation / hyperlink / richText / cellStyles 等 per-cell 元数据时用 range read。大范围数据建议分页读取(单次 ≤5000 单元格)。命令:csv-get/range read |
| sheet-write-data | 写入数据到工作表。当用户说"写数据"、"填表"、"更新单元格"、"写公式"、"超链接"、"写值同时设样式/数据验证"、"追加数据"、"导入CSV"时使用。大批量纯值(>5行或>20单元格)必须用 csv-put 而非 range update。命令:range update/append/csv-put |
| sheet-search-replace | 搜索和替换文本。当用户说"搜索"、"查找"、"替换"、"把A改成B"时使用。禁止用 range read 全量读取后客户端过滤代替 find,禁止用 range update 模拟 replace。命令:find/replace |
| sheet-range-operations | 区域结构性操作。当用户说"清空"、"排序"、"自动填充"、"复制区域到"、"移动数据到"时使用。均为服务端原子操作,禁止 range read+range update 组合模拟。排序前必须先读前几行判断表头。命令:range clear/range sort/range fill/range copy-to/range move-to |
| sheet-dimension-operations | 行列增删移动与属性设置。当用户说"插入行/列"、"删除行/列"、"隐藏/显示行列"、"设行高/列宽"、"移动行/列"、"追加空行/空列"时使用。命令:insert-dimension/delete-dimension/update-dimension/move-dimension/add-dimension |
| sheet-style-format | 单元格样式与合并。当用户说"设样式"、"改颜色/字体/对齐"、"数字格式(百分比/货币/日期)"、"合并/取消合并"时使用。纯样式/批量样式走 set-style;写值同时设置少量 cell 样式可用 range update 的 cellStyles。命令:range set-style/range batch-set-style/merge-cells/unmerge-cells |
| sheet-dropdown | 下拉列表管理。当用户说"设置下拉"、"下拉选项"、"删除下拉"时使用。命令:set-dropdown/get-dropdown/delete-dropdown |
| sheet-media-image | 附件上传与图片。当用户说"上传附件"、"写入图片到单元格"、"浮动图片"时使用。单元格图片用 write-image(禁止 range update);浮动图片需先 media-upload 再 create-float-image。命令:media-upload/write-image/create-float-image/get-float-image/list-float-images/update-float-image/delete-float-image |
| sheet-filter | 全局筛选。当用户说"筛选"、"过滤"、"只看某些行"(未说"筛选视图")时使用。禁止用"删除不符合条件的行"代替筛选。命令:filter get/create/delete/update/clear-criteria/sort |
| sheet-filter-view | 筛选视图(个人化,不影响协作者)。当用户明确说"筛选视图"时使用,与全局筛选相互独立。命令:filter-view list/create/update/delete/info/update-criteria/delete-criteria/list-criteria/get-criteria |
| sheet-conditional-format | 条件格式规则。触发词:标红/标黄/高亮/突出/标记/数据条/色阶/颜色随数据变 → 强制走条件格式,禁止 range set-style 静态样式替代。命令:cond-format list/create/update/delete |
| sheet-export | 导出表格为 xlsx。当用户说"导出"、"下载xlsx"、"存为Excel"时使用。单命令一站式,CLI 内部自动轮询,禁止 Agent 侧重试。命令:export |
全局硬约束
--sheet-id禁止臆测:未知时必须dws sheet list --node <ID> --format json查询,禁止编造Sheet1/sheet1/0/default- 合并单元格是结构信息:
dws sheet info --node <ID> --sheet-id <SHEET_ID> --format json返回mergedRanges(如["C7:D11"]);不要在range read/csv-get里寻找合并信息 - 最后非空坐标只用 A1 语义:
sheet info通过nonEmptyRange返回 A1/UI 边界;优先使用nonEmptyRange.range,需要追加行/列时使用nonEmptyRange.lastRow/nonEmptyRange.lastColumn。不要依赖底层 0-based 的lastNonEmptyRow/lastNonEmptyColumn range update维度校验:--values行列数必须与--range完全一致;只接--values一个数据参数,celltype仅支持text/richText;整格超链接通过 cell-levelhyperlink表达,富文本片段链接才使用richText.texts[].type="link"- dataValidation 三语义:不传
dataValidation字段=保留原 DV;dataValidation:{type:"none"}=显式清除;dataValidation:{type:"dropdown"/"checkbox",...}=覆盖。{}跳过亦保留原 DV - hyperlink 三语义:不传
hyperlink字段=保留原整格超链接;hyperlink:{type:"none"}=显式清除;hyperlink:{type:"path"/"sheet"/"range",link,...}=覆盖。Agent 调用不要用hyperlink:null,避免网关/Schema 过滤 null 字段 - 样式写法:cell-level 样式用
cellStyles或range set-style;richText 片段级样式才用子项style。不要在type:"text"顶层使用旧style字段 - 用专用命令不用组合模拟:搜索→
find、替换→replace、清空→range clear、排序→range sort、填充→range fill、复制区域→range copy-to、移动区域→range move-to、移动行列→move-dimension - 大批量纯值用
csv-put(>5 行或 >20 单元格),不用range update - 单元格图片用
write-image(range update不支持图片参数) export禁止自行轮询(CLI 内部已完成渐进式退避,最多 30 次约 5 分钟)- 单次调用上限:
range update/set-style行数 ≤ 1000,单元格总数建议 ≤ 5000(硬限 30000) - 关键区分:sheet(电子表格/单元格读写)vs aitable(AI多维表/结构化记录)vs doc(文档)
URL 粘贴场景
用户直接粘贴表格 URL(无其他指令):
- 先 probe:
dws doc info --node <URL> --format json extension=axls→list+range read(读取第一个工作表数据)extension=xlsx/xls/xlsm/csv→ 转dws drive download --node <URL> --output ./
用户粘贴 URL + 附加指令:
- probe 为
axls→ 按 Reference 索引路由到对应命令 - probe 为 xlsx/csv → 先
dws drive download下载到本地,严禁调用 sheet 命令
导入本地表格
用户说"导入Excel/把xlsx转为在线表格/上传表格并在线编辑"时:
# 上传并转换为在线电子表格(转换后返回 nodeId,可用 sheet 命令操作)
dws drive upload --file ./data.xlsx --convert
# 指定上传到某个文件夹
dws drive upload --file ./data.xlsx --folder <FOLDER_ID> --convert
# 指定上传到知识库
dws drive upload --file ./data.xlsx --workspace <WS_ID> --convert
--convert是关键参数,不加则仅上传为附件,不会转换为在线电子表格- 转换后的文档为
axls格式,可用sheet全部命令操作 - 支持
.xlsx/.xls/.csv等格式
nodeId 说明
--node 同时支持文档 ID、URL、分享链接。drive list 返回中必须用 fileId(UUID 格式),禁止用 dentryId(纯数字)。