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.
11 KiB
表格与工作表管理
使用场景
用户说"创建表格/新建电子表格":
- 创建表格文档 →
create
用户说"看工作表/有哪些工作表/表格结构":
- 列出工作表 →
list - 工作表详情 →
info
用户说"加工作表/新增Sheet":
- 新建工作表 →
new
用户说"修改工作表名称/重命名工作表/移动工作表位置/隐藏工作表/显示工作表/冻结行/冻结列/取消冻结/更新工作表属性":
- 更新工作表属性 →
update - 重命名工作表 →
update --name "新名称" - 移动工作表位置 →
update --index N - 隐藏工作表 →
update --hidden - 显示工作表 →
update --hidden=false - 冻结行列 →
update --frozen-row-count N --frozen-column-count M - 取消冻结 →
update --frozen-row-count 0 --frozen-column-count 0
用户说"复制工作表/拷贝工作表/克隆工作表/工作表副本":
- 复制工作表 →
copy - 复制并指定名称 →
copy --name "副本名称" - 复制并指定位置 →
copy --index N
用户说"删除工作表/移除工作表/删掉这个Sheet":
- 删除工作表 →
delete-sheet(不可逆操作,执行前必须向用户确认)
命令详细参考
创建钉钉表格文档
Usage:
dws sheet create [flags]
Example:
dws sheet create --name "销售数据"
dws sheet create --name "Q1 数据" --folder <FOLDER_ID>
dws sheet create --name "知识库表格" --workspace <WS_ID>
Flags:
--name string 表格名称 (必填)
--folder string 目标文件夹 ID (dentryUuid 格式) 或 URL;禁止传入纯数字 dentryId
--workspace string 目标知识库 ID
ID 格式约束:
--folder只接受 UUID 格式的fileId(如ZgpG2NdyVXYOR2D5UGDok65MJMwvDqPk)或 alidocs 文件夹 URL。drive list返回中有dentryId(纯数字,如218595998810)和fileId(UUID 格式)两个字段,必须使用fileId,禁止使用dentryId,传入纯数字会导致命令失败。
获取全部工作表列表
Usage:
dws sheet list [flags]
Example:
dws sheet list --node <NODE_ID>
dws sheet list --node "https://alidocs.dingtalk.com/i/nodes/<DOC_UUID>"
Flags:
--node string 表格文档 ID 或 URL (必填)
获取指定工作表详情
Usage:
dws sheet info [flags]
Example:
dws sheet info --node <NODE_ID>
dws sheet info --node <NODE_ID> --sheet-id <SHEET_ID>
dws sheet info --node <NODE_ID> --sheet-id "Sheet1"
Flags:
--node string 表格文档 ID 或 URL (必填)
--sheet-id string 工作表 ID 或名称 (不传则返回第一个工作表)
返回字段中 mergedRanges 是当前工作表的合并单元格范围列表(A1 表示法,如 ["C7:D11"])。它属于工作表结构/布局元数据:读写单元格内容前,如需判断表头、分组标题、续写位置或避开合并冲突,应先看 sheet info,不要在 range read / csv-get 的单元格值里寻找合并信息。
新建工作表
Usage:
dws sheet new [flags]
Example:
dws sheet new --node <NODE_ID> --name "Sheet2"
dws sheet new --node <NODE_ID> --name "数据汇总"
Flags:
--node string 表格文档 ID (必填)
--name string 工作表名称 (必填)
更新工作表属性
Usage:
dws sheet update [flags]
Example:
# 改名 + 调整冻结
dws sheet update --node <NODE_ID> --sheet-id <SHEET_ID> --name "汇总表" --frozen-row-count 2 --frozen-column-count 1
# 隐藏工作表
dws sheet update --node <NODE_ID> --sheet-id <SHEET_ID> --hidden=true
# 显示工作表
dws sheet update --node <NODE_ID> --sheet-id <SHEET_ID> --hidden=false
# 移动工作表到第一个位置
dws sheet update --node <NODE_ID> --sheet-id <SHEET_ID> --index 0
# 取消冻结
dws sheet update --node <NODE_ID> --sheet-id <SHEET_ID> --frozen-row-count 0 --frozen-column-count 0
Flags:
--node string 表格文档 ID 或 URL (必填)
--sheet-id string 工作表 ID 或名称 (必填)
--name string 新名称,最长 100 字符,不能包含 / \ ? * [ ] :
--index int 新位置(从 0 开始)
--hidden --hidden=true 隐藏,--hidden=false 取消隐藏
--frozen-row-count int 冻结行数,0 表示取消冻结
--frozen-column-count int 冻结列数,0 表示取消冻结
更新工作表名称、位置、隐藏状态、冻结行列。
--name / --index / --hidden / --frozen-row-count / --frozen-column-count 至少提供一个;多个属性可同时传入,将在同一次请求中更新。
注意:
- 至少需要保留一个可见的工作表,不能将所有工作表都隐藏
- 冻结行数/列数不能超过工作表的总行数/列数
复制工作表
Usage:
dws sheet copy [flags]
Example:
# 按默认位置复制
dws sheet copy --node <NODE_ID> --sheet-id <SHEET_ID>
# 指定副本名称和位置
dws sheet copy --node <NODE_ID> --sheet-id <SHEET_ID> --name "销售副本" --index 2
# 只指定名称
dws sheet copy --node <NODE_ID> --sheet-id <SHEET_ID> --name "备份"
Flags:
--node string 表格文档 ID 或 URL (必填)
--sheet-id string 源工作表 ID 或名称 (必填)
--name string 副本名称,最长 100 字符,不能包含 / \ ? * [ ] : (不传则系统自动生成)
--index int 副本位置(从 0 开始)(不传则放在源工作表之后)
复制指定工作表,在同一表格中创建一个副本。
复制操作会将源工作表的所有内容(包括数据、格式、公式等)完整复制到新工作表中。
传 --index 时,CLI 会先复制,再追加一次位置更新,把副本移动到目标索引。
名称与已有工作表重复时系统会自动重命名。
删除工作表
Usage:
dws sheet delete-sheet [flags]
Example:
dws sheet delete-sheet --node <NODE_ID> --sheet-id <SHEET_ID>
Flags:
--node string 表格文档 ID 或 URL (必填)
--sheet-id string 要删除的工作表 ID 或名称 (必填)
CAUTION: 不可逆操作 — 执行前必须向用户确认。
删除指定的工作表及其所有数据。约束:
- 不能删除隐藏的工作表(需先通过
sheet update --hidden false取消隐藏再删除) - 不能删除最后一个可见工作表(至少保留一个可见工作表)
核心工作流
# ── 工作流 1: 创建表格并写入数据 ──
# 1. 创建表格文档 — 提取 nodeId
dws sheet create --name "销售数据" --format json
# 2. 查看工作表列表 — 提取 sheetId
dws sheet list --node <NODE_ID> --format json
# 3. 写入表头和数据
dws sheet range update --node <NODE_ID> --sheet-id <SHEET_ID> --range "A1:C1" \
--values '[["姓名","部门","销售额"]]' --format json
dws sheet range update --node <NODE_ID> --sheet-id <SHEET_ID> --range "A2:C4" \
--values '[["张三","销售部",50000],["李四","市场部",38000],["王五","销售部",62000]]' --format json
# ── 工作流 2: 读取已有表格数据 ──
# 1. 获取工作表列表
dws sheet list --node <NODE_ID> --format json
# 2. 查看工作表详情(行列数、最后非空位置等)
dws sheet info --node <NODE_ID> --sheet-id <SHEET_ID> --format json
# 3. 读取全部数据
dws sheet range read --node <NODE_ID> --sheet-id <SHEET_ID> --format json
# 4. 读取指定区域
dws sheet range read --node <NODE_ID> --sheet-id <SHEET_ID> --range "A1:D10" --format json
# ── 工作流 3: 多工作表管理 ──
# 1. 新建工作表
dws sheet new --node <NODE_ID> --name "汇总" --format json
# 2. 在新工作表中写入汇总公式
dws sheet range update --node <NODE_ID> --sheet-id <NEW_SHEET_ID> --range "A1:B1" \
--values '[["指标","数值"]]' --format json
dws sheet range update --node <NODE_ID> --sheet-id <NEW_SHEET_ID> --range "A2:B2" \
--values '[["总销售额","=SUM(Sheet1!C2:C100)"]]' --format json
上下文传递
| 操作 | 从返回中提取 | 用于 |
|---|---|---|
create |
nodeId |
list / info / new / range read / range update / find 的 --node |
list |
工作表的 sheetId |
info / range read / range update / find 的 --sheet-id |
new |
新工作表的 sheetId |
range read / range update / find 的 --sheet-id |
info |
rowCount / nonEmptyRange.range / nonEmptyRange.lastRow / nonEmptyRange.lastColumn / mergedRanges |
确定数据范围、追加写入起始行、判断合并单元格结构 |
注意事项
- ★
--sheet-id获取规范(强制):所有涉及--sheet-id参数的命令,除非用户主动提供了工作表 ID 或工作表名称,否则在sheetId未知时必须先通过dws sheet list --node <NODE_ID> --format json查询真实的sheetId/ 工作表名称后再调用,禁止凭空编造(如臆测为Sheet1、sheet1、0、default等);用户仅给出工作表名称时,也应通过list校验该名称是否存在,避免名称大小写或拼写不一致导致失败 mergedRanges中的范围表示一个整体语义区域。合并区域内非左上角单元格为空并不代表无内容,通常应以左上角单元格的值作为该合并区域的含义。create不传--folder和--workspace时,默认创建在"我的文档"根目录list返回所有工作表的 ID 和名称,是后续操作的必要前置步骤info不传--sheet-id时默认返回第一个工作表的详情new创建工作表时,如名称与已有工作表重复,系统会自动重命名update的--name、--index、--hidden、--frozen-row-count、--frozen-column-count至少必须提供一个update的--name最长 100 字符,不能包含/ \ ? * [ ] :等特殊字符update的--index为 0-based 非负整数,0 表示移动到最前面update的--hidden设为 true 时,至少需要保留一个可见的工作表,不能将所有工作表都隐藏update的--frozen-row-count/--frozen-column-count为非负整数,不能超过工作表的总行数/列数,设为 0 表示取消冻结update当同时提供多个属性时,所有属性将在同一次请求中更新copy复制操作会将源工作表的所有内容(包括数据、格式、公式等)完整复制到新工作表copy的--name可选,不传时系统自动生成名称(通常为"源名称 副本"或类似格式)copy的--name最长 100 字符,不能包含/ \ ? * [ ] :等特殊字符copy当指定名称与已有工作表重复时,系统会自动重命名为合法值copy的--index可选,不传时副本将放置在源工作表之后的默认位置delete-sheet为不可逆操作,执行前必须向用户确认delete-sheet不能删除隐藏的工作表,需先通过update --hidden=false取消隐藏再删除delete-sheet不能删除最后一个可见工作表,至少保留一个可见工作表- ★ 关键区分: sheet(电子表格/单元格读写) vs aitable(AI多维表/结构化记录/字段定义) vs doc(文档编辑/阅读)