Skip to content

[Feature] 暴露 dws sheet 的下拉/数据验证等元数据命令(get_dropdown_lists),支持不读单元格内容获取列取值 #382

@Mzs-code

Description

@Mzs-code

Problem Statement

在使用 dws(v1.0.32)处理钉钉在线表格(axls)时,若想知道"某一列有哪些取值/可选项",目前只能把该列所有单元格用 dws sheet range read 读出来再去重,存在两个问题:

  1. range read 有响应大小上限,无法一次批量读多列(例如 A2:H3126 这类多列大范围会直接失败,且要 ~20s 才返回错误),只能逐列读取;逐列串行又受单次调用延迟拖累,一张 15 列的表需要并发才能压到 ~20s。
  2. 这种"逐格读内容"对设置了数据验证(下拉列表)的列本应是多余的——下拉选项本身就是列的元数据,理应可以直接读取而不必扫描所有行。

dws schema 中其实已经定义了相关的元数据工具(如 get_dropdown_lists / set_dropdown_lists / delete_dropdown_listsget_filter / set_filter_criteriacond_format 系列等),但它们没有被暴露为可运行的 CLI 子命令:

  • dws sheet --help 实际只列出 20 个可运行命令(add-dimension/append/…/write-image),不含上述 snake_case 工具;
  • 运行 dws sheet get_dropdown_lists ...dws sheet get-dropdown-lists ... 会报 unknown flag: --node,且 --help 退回到 dws sheet 级别;
  • 即"dws schema 里有、CLI 里跑不了"的不一致。

Proposed Solution

dws schema 中已定义、但 CLI 未接通的这些 sheet envelope 工具暴露为可运行的 CLI 子命令,优先级最高的是 get_dropdown_lists:

# 期望:返回指定范围内各下拉/数据验证区域的选项配置(元数据,不读单元格内容)
dws sheet get-dropdown-lists \
  --node "<URL|ID>" --sheet-id "<sheetId>" --range "A1:O3126" --format json

一并希望补齐(均已在 dws schema 中定义):
- get_dropdown_lists / set_dropdown_lists / delete_dropdown_lists
- get_filter / create_filter / set_filter_criteria / clear_filter_criteria / sort_filter
- create_cond_format / get_cond_format / update_cond_format / delete_cond_format

并建议提供一致性校验,确保 dws schema <product>.<tool> 中列出的工具都能在 dws <product> --help 中作为命令运行,避免 schema 与 CLI 脱节。

Alternatives Considered
                                                1. 逐列 range read全量读取后本地去重(当前唯一可行做法):对纯文本列是并发,一张表 ~20s;"下拉列"则
2. 改用多维表(aitable/able):dws aitable field ge记录),这正是期望的"不读内容拿  里,axls 没有等价能力——本 issue即希望为 axls 补上类似的元数据读取路径。        
Use Case                                        
- 快速了解一张在线表格的 schema:输出"每列表头 + 该列可选值",用于数据探查、生成把成千上万行内容拉下来。
- 自动化 / AI Agent 场景:Agent 在为表格生成字段/取值约束文档 据级)拿到列的可选值,而不是大量range read。
- 校验数据规范性:对比"下拉定义 脏数据(如同一含义的大小写/变体不一致)。

Additional Context

- 版本:dws v1.0.32(open edition)。
- dws schema sheet.get_dropdowdeId, sheetId,range],但运行时不可用。
- 复现:

# schema 中存在
dws schema sheet.get_dropdown_lists --jq '.tool.required'
# 但 CLI 无法运行(报 unknown fheet)
dws sheet get-dropdown-lists --node "<URL|ID>" --sheet-id "<sheetId>" --range "A1:O50"
--format json
dws sheet get_filter --node "<URL|ID>" --sheet-id "<sheetId>" --format json

- 同类受影响命令:get_filter、create_filter、set_filter_criteria、cond_format 系列等(均在
schema 中、CLI 不可运行)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions