
gogcli 实操指南用gog sheets validation get读取 Google Sheets 数据验证规则【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli导读在 Google Sheets 中数据验证规则Data Validation Rule控制着单元格可输入的内容——例如下拉列表、数字范围、日期限制或自定义公式。gogcliGoogle Workspace in your terminal提供了gog sheets validation get命令让你无需打开浏览器即可从任意表格范围读取全部验证规则并以人类可读表格或机器可解析的 JSON 输出。读完本文你将掌握该命令的完整用法、两种范围寻址方式、JSON 结构化输出以及它如何同时识别普通单元格验证与表格托管的下拉列table-managed dropdown验证。命令定位validation 家族中的读取端gog sheets validation get属于gog sheets validation子命令族该家族在 internal/cmd/sheets_validation.go 中定义共包含三个操作子命令别名作用getlist、show读取指定范围内的数据验证规则本文主角setadd、create在范围上设置数据验证规则cleardelete、remove、rm清除数据验证规则被完整选中的表格下拉列会恢复为文本列对应文档见 gog-sheets-validation.md 及其子命令页面get、set、clear。get是整个命令族中唯一的纯读取操作因此即使开启--readonly保护模式也可以安全执行--readonly会在运行时拦截所有变更型 API 请求。基本用法与命令形态命令语法如下gog sheets (sheet) validation (data-validation,validations) get (list,show) spreadsheetId range其中括号表示可选别名sheets可用sheetvalidation可用data-validation或validationsget可用list或show。因此以下写法完全等价gog sheets validation get 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!A1:B10 gog sheets validation list 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!A1:B10 gog sheet validations show 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!A1:B10命令接收两个必填位置参数spreadsheetId电子表格 ID即 URL 中/spreadsheets/d/与/edit之间的字符串。range目标范围支持A1 记法如Sheet1!A1:B10或命名范围名称如MyNamedRange范围中若不带工作表名如直接写A1:B10命令会自动解析为第一个工作表并补全工作表前缀见 resolveValidationReadRange。缺省任一参数都会返回 usage 错误源码中通过usage(empty spreadsheetId)/usage(empty range)校验见 Run 方法。输出格式表格与 JSON 双模式默认表格输出默认情况下命令把匹配到的每个带验证规则的单元格输出为一行列包含工作表名Sheet、A1 坐标A1、行号Row、列号Col以及规则详情Rule。列定义来自sheetsValidationColumns()。示例输出SHEET A1 ROW COL RULE Sheet1 A2 2 1 {condition:{type:ONE_OF_LIST,values:[{userEnteredValue:Low},{userEnteredValue:Medium},{userEnteredValue:High}]}}如果目标范围内不存在任何验证规则命令会向 stderr 打印No data validation rules found并以成功状态退出不会报错。JSON 输出适合脚本化配合-j/--json/--machine标志输出切换为结构化 JSON外层包含三个字段gog sheets validation get -j 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!A1:B10{ spreadsheetId: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms, range: Sheet1!A1:B10, validations: [ { sheet: Sheet1, a1: A2, row: 2, col: 1, rule: { condition: { type: ONE_OF_LIST, values: [ {userEnteredValue: Low}, {userEnteredValue: Medium}, {userEnteredValue: High} ] }, showCustomUi: true } } ] }validations数组中的每个元素对应一个带规则的单元格其中rule字段直接透传 Google Sheets API 的DataValidationRule结构条件类型condition.type、条件值condition.values、strict是否拒绝非法输入、inputMessage提示消息等。该结构定义于 sheetsCellValidationJSON 序列化逻辑见 Run 中的 JSON 分支。与-j搭配的常用辅助标志--results-only仅输出主结果validations数组丢弃外层信封字段--select/--pick按逗号分隔的字段路径选择子集输出-p/--plain/--tsv输出稳定、可解析的 TSV 文本适合awk/cut等管道工具。底层原理两类验证规则的合并读取gog sheets validation get的核心价值在于它同时覆盖了两种验证规则来源这在源码层面体现得非常清晰见 Run 方法普通单元格验证cell-level validation通过一次Spreadsheets.GetAPI 请求带上IncludeGridData(true)和字段掩码sheets(properties(title),data(startRow,startColumn,rowData(values(dataValidation))))让服务端直接把范围内每个单元格的dataValidation内联返回。随后 collectCellValidations 遍历行数据把每个带DataValidation的单元格转换成sheet a1 row col rule记录并按数据块的startRow/startColumn偏移换算成真实行列号。表格托管下拉列验证table-managed dropdownGoogle Sheets 的表格Table功能把数据验证规则挂在列属性上columnProperties.dataValidationRule这类规则不会出现在普通单元格的 dataValidation 里。命令通过 fetchTableValidationSpans 另行拉取表格元数据字段掩码覆盖tables(tableId,range,columnProperties(columnIndex,columnName,columnType,dataValidationRule))把每个下拉列展开为从表头下一行到表尾自动扣除 footer 行的连续 Span。合并去重appendTableCellValidations用sheet:row:col作为 key 对两类结果去重合并再用Sheet → Row → Col顺序排序后输出。Span 的几何模型SheetID、TableID、ColumnIndex、StartRow/EndRow、StartCol/EndCol、Rule定义于 internal/sheetsvalidation/planner.go行/列区间求交与剪裁算法见 IntersectGridIndexes。也就是说即使某列验证规则是表格功能托管的界面上体现为整列下拉箭头get也能把该列所有数据行的规则如实列出来而不是只报告表格列有规则。命名范围与 A1 解析范围解析由resolveValidationReadRange完成若入参不含!先尝试按命名范围名称解析resolveNamedRangeByNameOrID解析成功则使用规范名称并定位网格区间否则走 A1 解析路径无工作表名时自动补第一个工作表标题。这套解析依赖 fetchSpreadsheetRangeCatalog 拉取的工作表 ID/标题/命名范围目录。常用标志速查get继承 gogcli 全局标志体系以下是读取场景最常涉及的标志完整清单见 gog-sheets-validation-get.md标志类型默认值说明-a/--account/--acctstring指定账户邮箱、别名或auto用于已认证的 Google API 命令--clientstring指定 OAuth client 名称选择对应存储凭证与令牌桶--access-tokenstring直接使用提供的 access token绕过存储的 refresh tokentoken 约 1 小时过期--quota-projectstring计费所用 Google Cloud 项目作为X-Goog-User-Project发送-j/--json/--machineboolfalse输出 JSON 到 stdout脚本最佳-p/--plain/--tsvboolfalse输出稳定的 TSV 文本--results-onlyboolJSON 模式下只输出主结果丢弃 nextPageToken 等信封字段--colorstringauto颜色输出auto/always/never-v/--verbosebool开启详细日志--no-input/--non-interactivebool永不提示失败直接退出适合 CI--readonlyboolfalse运行时拦截变更型 API 请求--homestring覆盖 gogcli 配置/数据/状态/缓存根目录等价于GOG_HOME--wrap-untrustedboolfalseJSON/raw 输出中给外部文本字段加不受信内容标记实战场景1. 审计一张表的全部验证规则gog sheets validation get 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1不指定行范围时命令按整表读取源码中resolveValidationReadRange对无行号的范围会保留开放区间。此时建议配合--color never避免管道输出夹杂颜色码。2. 检查单个单元格是否有下拉限制gog sheets validation get -p 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!C5输出 TSV 便于grep/awk快速判断。3. 用命名范围定位gog sheets validation get -j --results-only spreadsheetId MyNamedRange只拿到validations数组可直接喂给jq做二次处理。4. 配合 set/clear 实现验证规则的读-改-写get是验证规则管理流程的读取端配合 gog-sheets-validation-set.md 的set支持ONE_OF_LIST、ONE_OF_RANGE、NUMBER_BETWEEN、DATE_AFTER、BOOLEAN、CUSTOM_FORMULA等条件类型以及--value、--strict、--show-custom-ui、--input-message标志和 gog-sheets-validation-clear.md 的clear即可在脚本中完成先审计现有规则 → 再增删改的完整闭环。5. 注意表格下拉列的特殊约束若后续要set/clear表格托管下拉列源码强制要求附加--filtered-rows-included标志且set时表格列只支持ONE_OF_LIST下拉见 BuildSetRequests 与 BuildClearRequests。先用get确认目标列是否属于表格托管能帮你提前规避这些 usage 错误。测试与实现验证该功能的正确性由以下测试保障可继续深入阅读internal/cmd/sheets_validation_more_test.go覆盖参数缺失、A1 解析、GridRange 转换与ForceSendFields如第一个工作表的SheetId0仍需强制发送等边界internal/sheetsvalidation/planner_test.go覆盖 Span 求交、区间剪裁与表格列验证规则的构建/清除逻辑internal/sheetsvalidation/copy.go验证规则复制PASTE_DATA_VALIDATION相关的补充请求构建逻辑。小结gog sheets validation get是把 Google Sheets 数据验证规则暴露给终端和脚本的最短路径一条命令同时覆盖普通单元格验证与表格托管下拉列支持 A1 记法、命名范围、TSV 与 JSON 输出是数据治理、规则审计与 CI 校验流程中的实用一环。结合set、clear与--readonly保护模式你可以在不打开浏览器的情况下把整张表的输入约束变成可检索、可版本化、可自动化的数据资产。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考