ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

gog sheets conditional-format 实战指南:用 gog CLI 在终端管理 Google Sheets 条件格式

gog sheets conditional-format 实战指南:用 gog CLI 在终端管理 Google Sheets 条件格式 gog sheets conditional-format 实战指南用 gog CLI 在终端管理 Google Sheets 条件格式【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcligog sheets conditional-format别名cf/conditional-formats是 gog 命令行客户端中专门用于管理 Google Sheets 条件格式规则的命令组支持添加布尔规则文本、数字、空白、自定义公式、创建色阶渐变规则、按工作表列出全部规则以及按优先级索引或整表清除规则。读完本文你将掌握从终端完整管理电子表格条件格式的工作流包括命令别名、参数语义、Sheets API 底层映射、dry-run 预演与自动化安全用法。命令概览与别名条件格式命令挂在gog sheets之下全部子命令均需以spreadsheetId作为位置参数。命令组结构如下gog sheets (sheet) conditional-format (cf,conditional-formats) command三个子命令详见 gog sheets conditional-format 参考页子命令别名功能addcreate,new添加一条条件格式规则cleardelete,rm,remove删除条件格式规则list—列出条件格式规则完整的命令树与全局旗标可参考 gog sheets 与 命令索引。由于这些页面由gog schema --json自动生成见Makefile中的make docs-commands本文中的用法与旗标均与当前仓库代码保持一致。前置准备认证、ID 与 Range在使用条件格式命令前需要完成 gog 的 OAuth 认证并授权sheets服务其 API scope 为https://www.googleapis.com/auth/spreadsheets见 README 中的服务授权表gog auth credentials set ~/Downloads/client_secret_*.json gog auth add yougmail.com --services sheetsspreadsheetIdGoogle Sheets 电子表格 ID即表格 URL 中/spreadsheets/d/之后的一长串字符。Range 参数必须是带工作表名的 A1 范围例如Sheet1!A2:C、Sheet1!D2:D100。从源码看add命令会通过parseSheetRange与gridRangeFromMap把 A1 表示转换为 Sheets API 的GridRange含 sheetId、行列索引因此省略工作表名的裸 A1 范围无法通过校验见 internal/cmd/sheets_conditional.go。添加布尔规则conditional-format addadd命令支持两种规则形态布尔规则boolean rule满足条件时套用一种格式与渐变/色阶规则gradient rule。两者互斥。命令签名gog sheets (sheet) conditional-format (cf,conditional-formats) add (create,new) spreadsheetId range [flags]规则类型与--type--type决定布尔规则条件类型命令层使用简写内部会映射为 Sheets API 的BooleanCondition.Type映射表见 internal/sheetsconditional/conditional.go--type简写Sheets API 条件类型是否需要--exprtext-eqTEXT_EQ是text-containsTEXT_CONTAINS是text-starts-withTEXT_STARTS_WITH是text-ends-withTEXT_ENDS_WITH是number-eqNUMBER_EQ是number-gtNUMBER_GREATER是number-gteNUMBER_GREATER_THAN_EQ是number-ltNUMBER_LESS是number-lteNUMBER_LESS_THAN_EQ是blankBLANK否禁止传--exprnot-blankNOT_BLANK否禁止传--exprcustom-formulaCUSTOM_FORMULA是传入公式文本需要 1 个值的类型必须提供--expr否则会报--expr is required for this conditional format type而blank/not-blank类型如果误传--expr会报--expr is not used with --type blank。未知类型则报unsupported --type ...行为由BuildCondition校验测试见 internal/sheetsconditional/conditional_test.go。文本与数字规则示例来自 Sheets Formatting 指南 的典型用法——当单元格文本等于done时套用浅绿色背景gog sheets conditional-format add $spreadsheet_id Sheet1!A2:C \ --type text-eq \ --expr done \ --format-json {backgroundColor:{red:0.85,green:0.94,blue:0.82}}--format-json与--format-fields--format-json接受内联 JSON 或file形式内容为 Sheets API 的CellFormat含backgroundColor、textFormat、borders等字段。源码通过sheetsformat.Decode解析因此凡是gog sheets format支持的格式 JSON 均可复用internal/cmd/sheets_conditional.go。--format-fields指定显式字段掩码如backgroundColor,textFormat.bold。当格式 JSON 中出现必须强制发送的0/false/ 空值字段时使用。例如“字号非粗体”这类需要显式下发false的场景gog sheets conditional-format add $spreadsheet_id Sheet1!A2:C \ --type custom-formula \ --expr $C2TRUE \ --format-json {textFormat:{bold:false}} \ --format-fields textFormat.bold--format-fields会经过sheetsformat.NormalizeMask规范化并调用ApplyForceSendFields把字段加入ForceSendFields若误写boarders这类拼写命令会给出found boarders; use borders的友好提示。--index控制规则优先级--index默认0指定新规则在条件格式优先级列表中的插入位置。Sheets 中先匹配的规则优先生效因此数字越小优先级越高。源码中该值直接传给AddConditionalFormatRuleRequest.Index且必须 ≥ 0负值报错--index must be zero or greater。add 命令专属旗标速查Flag类型说明--typestring布尔规则类型text-eq/text-contains/text-starts-with/text-ends-with/number-eq/number-gt/number-gte/number-lt/number-lte/blank/not-blank/custom-formula--exprstring布尔规则的比较值或自定义公式blank/not-blank省略--format-jsonstring布尔规则的CellFormatJSON内联或file--format-fieldsstring强制发送零值/假值字段的字段掩码如backgroundColor,textFormat.bold--gradient-rule-jsonstring渐变规则的GradientRuleJSON内联或file--indexint64在此优先级索引处插入规则默认0创建色阶渐变规则--gradient-rule-json渐变规则色阶使用 Sheets API 的GradientRuleJSON通过--gradient-rule-json传入不可与--type、--expr、--format-json、--format-fields混用——源码会明确报错use either --gradient-rule-json or boolean rule flags ... not bothinternal/cmd/sheets_conditional.go。例如对D2:D100创建从白色最小值到绿色最大值的渐变gog sheets conditional-format add $spreadsheet_id Sheet1!D2:D100 \ --gradient-rule-json {minpoint:{type:MIN,colorStyle:{rgbColor:{red:1,green:1,blue:1}}},maxpoint:{type:MAX,colorStyle:{rgbColor:{red:0.2,green:0.7,blue:0.2}}}}JSON 结构支持minpoint/midpoint/maxpoint三个插值点每点可含typeMIN/MAX/NUMBER/PERCENT/PERCENTILE、value数值型插值点需要、color或colorStyle颜色。几个源码级细节值得注意minpoint与maxpoint必填缺任一都会报--gradient-rule-json must include minpoint and maxpoint。JSON 使用DisallowUnknownFields严格解码未知字段会直接报错internal/cmd/sheets_conditional.go。渐变颜色不支持 alpha 通道若在颜色对象中出现alpha字段命令会拒绝sheets gradient colors do not support alpha。源码会为显式写出的red/green/blue自动补上ForceSendFields确保0值颜色分量如纯黑背景不会因 protobuf 零值省略而被服务端忽略见preserveConditionalGradientRGBFields。列出规则conditional-format listgog sheets (sheet) conditional-format (cf,conditional-formats) list spreadsheetId [flags]不带旗标列出全部工作表的规则--sheet name仅列出指定工作表内的规则。推荐搭配--json输出结构化结果每条规则包含sheetId、sheetTitle、index该表内的规则序号、type布尔规则为条件类型渐变规则为GRADIENT_RULE、values、rangesA1 表示与原始rule对象。表格输出人类可读模式列名由sheetsConditionalColumns()提供没有任何规则时提示No conditional format rules。示例gog sheets conditional-format list $spreadsheet_id --json gog sheets conditional-format list $spreadsheet_id --sheet Sheet1list命令底层通过Spreadsheets.Get仅请求sheets(properties(sheetId,title),conditionalFormats)字段再经sheetsconditional.RuleItems规整为规则列表internal/sheetsconditional/conditional.go。清除规则conditional-format cleargog sheets (sheet) conditional-format (cf,conditional-formats) clear (delete,rm,remove) --sheetSTRING spreadsheetId [flags]clear是破坏性命令要求显式指定删除目标且必须提供--sheet--index n删除该工作表优先级索引为n的规则。索引越界会报--index N out of range; sheet has M rules。--all删除该工作表全部规则。--index与--all互斥同时给出会报错两者都没给则报provide --index or --all。破坏性确认默认会先打印将要删除的规则数量并要求确认自动化场景可加-y/--force跳过确认源码中clear先走dryRunAndConfirmDestructive再真正提交见 internal/cmd/sheets_conditional.go。示例来自 Sheets Formatting 指南gog sheets conditional-format clear $spreadsheet_id --sheet Sheet1 --index 0 --force gog sheets conditional-format clear $spreadsheet_id --sheet Sheet1 --all --force一个值得关注的实现细节clear --all生成的删除请求从最大索引倒序排列for index : count - 1; index 0; index--这样在单次批量请求中删除时前面的删除不会导致后续索引漂移internal/sheetsconditional/conditional.go。该行为由测试TestDeletePlanning验证internal/sheetsconditional/conditional_test.go。删除完成后JSON 模式返回{spreadsheetId:..., sheet:..., removed:N}。底层原理一次 add 请求的完整链路结合源码 internal/cmd/sheets_conditional.go 与 internal/sheetsconditional/conditional.goadd命令的实际流程为规范化spreadsheetId清洗并解析 A1range必须含工作表名。判断是渐变还是布尔规则渐变解析--gradient-rule-json→sheets.GradientRule调用BuildGradientAddRequest构造AddConditionalFormatRuleRequest布尔解析--format-json→sheets.CellFormat由BuildCondition把--type/--expr转换为BooleanConditionTypeConditionValue再调用BuildAddRequest。走 dry-run 出口若启用--dry-run只打印操作计划不实际调用 API。通过sheetsService获取服务用Spreadsheets.Get拉取工作表 ID 映射把 A1 range 转换为GridRange。将构造好的AddConditionalFormatRuleRequest含Rule与Index封装进BatchUpdateSpreadsheetRequest一次批量请求提交。成功后在人类可读模式打印Added conditional format rule to rangeJSON 模式返回spreadsheetId、range、type渐变规则为GRADIENT_RULE与index。单元测试覆盖了布尔规则与渐变规则两种请求的构造正确性TestBuildAddRequest/TestBuildGradientAddRequest见 internal/sheetsconditional/conditional_test.go端到端测试则验证了真实 HTTP 请求体中强制发送sheetId:0与backgroundColor字段internal/cmd/sheets_advanced_test.go。通用全局旗标适用于全部子命令以下旗标为 gog 全局旗标在conditional-format及其子命令上均可用完整定义见各参考页与 gog sheetsFlag类型默认说明--access-tokenstring直接使用提供的访问令牌绕过存储的 refresh token令牌约 1 小时过期-a/--account/--acctstring认证 Google API 命令使用的账户邮箱、别名或auto--clientstringOAuth 客户端名称选择已存凭据与令牌桶--colorstringauto颜色输出auto/always/never--disable-commandsstring逗号分隔的禁用命令列表支持点路径-n/--dry-run/--dryrun/--noop/--previewbool不实际变更打印计划操作后以成功退出--enable-commandsstring逗号分隔的启用命令前缀支持点路径限制 CLI--enable-commands-exactstring逗号分隔的精确启用命令父命令不会连带启用子命令-y/--force/--assume-yes/--yesbool跳过破坏性命令的确认--gmail-no-sendboolfalse阻止 Gmail 发送操作Agent 安全-h/--helpkong.helpFlag显示上下文相关帮助--homestring覆盖 gogcli 配置/数据/状态/缓存根目录等价于GOG_HOME-j/--json/--machineboolfalse输出 JSON 到 stdout最适合脚本--no-input/--non-interactive/--noninteractivebool从不提示无法执行时直接失败适合 CI-p/--plain/--tsvboolfalse输出稳定可解析的纯文本TSV无颜色--quota-projectstring用于 API 配额计费的 Google Cloud 项目作为X-Goog-User-Project发送部分 API 与--access-token/ADC 联用需要--readonlyboolfalse运行时阻止变更型 API 请求auth add同时只申请只读 OAuth scope--results-onlyboolJSON 模式下仅输出主结果丢弃nextPageToken等信封字段--select/--pick/--projectstringJSON 模式下选择逗号分隔字段尽力而为支持点路径-v/--verbosebool开启详细日志--versionkong.VersionFlag打印版本并退出--wrap-untrustedboolfalseJSON/raw 输出中把外部获取的文本字段包上不受信任内容标记自动化与安全实践条件格式命令非常适合写进脚本或 Agent 工作流推荐组合以下旗标预演变更add与clear均支持--dry-run。add的 dry-run 计划包含spreadsheet_id、range、index、type与构造出的values/gradient_ruleclear的 dry-run 会列出待删除规则数量并要求确认破坏性命令在 dry-run 下同样需要--force才继续见测试 internal/cmd/sheets_advanced_test.go。结构化输出脚本与 LLM 解析建议统一使用--json并视需要搭配--results-only丢弃信封字段。限制边界CI 中加--no-input避免挂起等待输入只读审计场景加--readonlylist属于只读操作add/clear会被运行时拦截。更多资料Sheets Formatting 指南含条件格式、校验、链接、斑马纹gog sheets conditional-format add / list / cleargog sheets 命令组 与 命令索引gog 快速上手与认证 / 自动化输出与退出码契约【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表