ARTICLE DETAIL

资讯详情

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

gogcli 的 `gog sheets table` 实战指南:在终端中管理 Google Sheets 结构化表格

gogcli 的 `gog sheets table` 实战指南:在终端中管理 Google Sheets 结构化表格 gogcli 的gog sheets table实战指南在终端中管理 Google Sheets 结构化表格【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli本文聚焦 gogcliGoogle Workspace in your terminal中负责管理 Google Sheets 结构化表格的gog sheets table命令族完整覆盖其子命令、列类型校验、安全防护设计及与底层 Sheets API 的对应关系。读完本文你将掌握如何用纯命令行完成表格的创建、查询、追加、清空与删除并理解这些命令为何比直接操作普通单元格区域更安全、更贴合结构化数据场景。从普通区域到结构化表格gog sheets table的定位Google Sheets 的表格table是一种特殊的结构化对象它与普通单元格区域cell range有本质区别Sheets 会为表格维护一个独立的 Table ID、表格名称、类型化列定义typed columns以及有界bounded的表格区域table range。这一点在项目配套指南 docs/sheets-tables.md 中有明确说明也是gog sheets table存在的根本原因。在 gogcli 中gog sheets table是一个包含 6 个子命令的命令组其结构定义位于源码 internal/cmd/sheets_table.go子命令作用别名gog sheets table list列出电子表格中的所有表格无gog sheets table get按 ID 或名称读取单个表格show,infogog sheets table create创建表格add,newgog sheets table append向表格追加数据行add-row,add-rowsgog sheets table clear清空表格数据行clear-rowsgog sheets table delete删除表格rm,remove,del使用时机摘自 docs/sheets-tables.md 的 When To Use当电子表格包含列名稳定、结构化的数据行时优先使用表格普通区域操作无结构化语义仍使用gog sheets get、update、append、clear仅需要可复用的区域选择器时使用命名区域named range即可不必引入表格。创建表格gog sheets table create创建表格需要四个要素电子表格 ID、带工作表限定名的区域或命名区域、表格名称以及列定义。gog sheets table create $spreadsheet_id Sheet1!A1:C4 \ --name Tasks \ --columns-json [{columnName:Task,columnType:TEXT},{columnName:Amount,columnType:DOUBLE},{columnName:Done,columnType:BOOLEAN}]命令的关键参数完整参数表见 gog-sheets-table-create.md参数类型说明spreadsheetId位置参数电子表格 IDrange位置参数表格区域Sheet1!A1:C4形式的带表名 A1 表示法或已有命名区域名称--namestring表格名称必填--columns-jsonstring列定义 JSON 数组支持内联或file文件路径必填--columns-json的两种写法--columns-json既可以直接内联 JSON也可以用文件路径读取gog sheets table create $spreadsheet_id MyNamedRange \ --name Tasks \ --columns-json columns.json[ {columnName: Task}, {columnName: Amount, columnType: DOUBLE}, {columnName: Done, columnType: BOOLEAN} ]若省略columnTypegogcli 会将其默认规范化为TEXT。这一行为在源码 internal/cmd/sheets_table_columns.go 中实现normalizeSheetsTableColumnType对空字符串直接返回TEXT并忽略大小写。区域解析的两种路径创建命令支持两种区域来源internal/cmd/sheets_table.goA1 表示法如Sheet1!A1:C4会被解析成GridRange命名区域如MyNamedRange通过拉取电子表格的区域目录fetchSpreadsheetRangeCatalog后解析为GridRange。创建时的本地校验比 API 更早的防线gogcli 在发送变更请求前会先在本地完成列定义校验internal/cmd/sheets_table_columns.go使用DisallowUnknownFields严格解析 JSON出现多余字段直接报错每个列的columnName必填列类型必须通过normalizeSheetsTableColumnType校验dataValidationRule仅允许配合columnType: DROPDOWN使用否则本地拒绝。测试用例 internal/cmd/sheets_table_test.go 使用httptest模拟 Sheets API验证了创建请求会构造AddTableRequest且未指定类型的第一列默认落为TEXT。列类型速查表用对枚举名gogcli 在normalizeSheetsTableColumnTypeinternal/cmd/sheets_table_columns.go中把常见误写类型映射为带提示的错误避免把错误的类型名发给 Google。以下是文档给出的该用/不该用对照应该用不要用报错提示DOUBLENUMBERNUMBER is not a Sheets table column type; use DOUBLEBOOLEANCHECKBOXCHECKBOX ... use BOOLEANRATINGS_CHIPRATINGRATING ... use RATINGS_CHIPFILES_CHIP/PEOPLE_CHIP/FINANCE_CHIP/PLACE_CHIPSMART_CHIPSMART_CHIP ... use FILES_CHIP, PEOPLE_CHIP, FINANCE_CHIP, or PLACE_CHIP创建表格支持的全部列类型来自 internal/cmd/sheets_table_columns.go 的合法类型集合TEXT、DOUBLE、CURRENCY、PERCENT、DATE、TIME、DATE_TIME、BOOLEAN、DROPDOWN、FILES_CHIP、PEOPLE_CHIP、FINANCE_CHIP、PLACE_CHIP、RATINGS_CHIP。其中DROPDOWN是唯一允许附带dataValidationRule的类型其余类型若携带校验规则会在本地被拒绝internal/cmd/sheets_table_columns.go。查询表格list与get列出表格gog sheets table list $spreadsheet_id gog sheets table list $spreadsheet_id --jsonlist通过fetchSpreadsheetTables拉取电子表格的全部表格信息internal/cmd/sheets_table.go并请求了spreadsheet.get的指定字段包括tableId、name、range、rowsProperties(footerColorStyle)与columnProperties(...)。结果默认按名称排序JSON 模式输出{tables: [...]}信封结构。读取单个表格gog sheets table get $spreadsheet_id $table_id gog sheets table get $spreadsheet_id Tasks --jsonget的第二个位置参数tableId支持表格 ID 或表格名称。解析逻辑resolveSheetsTableinternal/cmd/sheets_table.go遵循以下规则先精确匹配TableID再大小写不敏感EqualFold匹配表格名称若名称匹配到多个表格报ambiguous table错误并列出候选的名称 (ID)。JSON 输出包含表格 ID、表格名称、工作表标题sheetTitle、A1 区域、原始GridRange、dataA1数据行区域以及类型化列定义internal/cmd/sheets_table.go。文本模式下则逐行输出name、id、sheet、a1及每个列的column行索引、列名、类型。追加数据行gog sheets table append按表格 ID 或名称追加gog sheets table append $spreadsheet_id $table_id \ --values-json [[Write docs,2,true]]三种传值方式--values-json二维 JSON 数组支持内联或file位置参数与gog sheets append相同的语法——逗号分隔行、竖线分隔单元格gog sheets table append $spreadsheet_id Tasks Write docs|2|true gog sheets table append $spreadsheet_id Tasks One|1|false,Two|2|true支持从 stdin 读取 JSON 值。此外--input参数控制值解析方式默认USER_ENTERED可切换为RAWinternal/cmd/sheets_table_append.go。底层调用链为什么不会碰坏表头sheets table append的实现internal/cmd/sheets_table_append.go是一个精心设计的流程先fetchSpreadsheetTables拉取表格元数据并用resolveSheetsTable解析 ID/名称校验表格存在且拥有有界 A1 区域has no bounded A1 range报错校验行宽超出表格列数的行会在发送变更前被本地拒绝validateSheetsTableAppendWidth调用 Sheetsvalues.appendAPI目标区域为表格的 A1 区域InsertDataOption固定为INSERT_ROWS。INSERT_ROWS的语义是新行插入在当前表格数据之后并自动扩展表格区域同时不会直接针对表头行写入。这与文档 docs/sheets-tables.md 的描述完全一致先解析表格再把新行放到表数据之后让 Sheets 自行扩表。清空数据行gog sheets table cleargog sheets table clear $spreadsheet_id $table_id --forceclear只清空表格数据体data body绝不触碰表头行。清空区域由sheetsTableDataRangeA1计算internal/cmd/sheets_table_clear.go从table.Range的StartRowIndex 1开始跳过表头行若表格存在页脚行通过rowsProperties.footerColorStyle判断见sheetsTableHasFooter则EndRowIndex - 1页脚行同样被跳过计算后若数据区为空EndRowIndex StartRowIndex返回false命令报错table has no data rows to clear不会发送空变更或碰触表头的变更。两个安全要点清空是破坏性操作必须显式传--force且随后仍有交互确认confirmDestructiveCheckedinternal/cmd/sheets_table_clear.go想零风险预览用--dry-run --jsongog sheets table clear $spreadsheet_id Tasks --dry-run --json--dry-run会打印将要执行的动作并在成功时直接退出不触发认证、不调用 Sheets APIdryRunExit位于 internal/cmd/sheets_table_clear.go。删除行列且保留表格gog sheets delete-dimension删除表格内部或与表格相交的行/列时不建议直接使用普通区域操作而应使用gog sheets delete-dimension属于gog sheets命令组但与表格强相关gog sheets delete-dimension $spreadsheet_id Sheet1 \ --dimension ROWS --start 2 --end 4 --force gog sheets delete-dimension $spreadsheet_id Sheet1!B:C \ --dimension COLUMNS --force关键规则docs/sheets-tables.md 与 gog-sheets-delete-dimension.md索引1 基且两端包含inclusive目标为工作表名时--start与--end都必须提供目标为带表限定的行列区域如Sheet1!2:4、Sheet1!B:C时自动推导相交表格的区域会在同一次原子的 Sheets 批量请求batchUpdate中同步调整尺寸DeleteDimensionRequestUpdateTableRequest见 internal/cmd/sheets_delete_dimension.go表格对象与剩余数据得以保留若删除会移除某个表格的整行或整列范围命令会拒绝执行。删除表格必须显式确认数据丢弃Sheets API 的DeleteTable语义是同时删除表格对象与其范围内的每一个单元格不存在只删表格结构、保留数据的原子操作。因此 gogcli 将--discard-data设为删除的前置条件internal/cmd/sheets_table.gogog sheets table delete $spreadsheet_id $table_id --discard-data --force两点务必注意未传--discard-data时命令直接报错退出deletes every cell in the table range; pass --discard-data to confirm intentional data deletion--force只跳过交互式确认不能替代--discard-data。需要保留区域内容时不要使用此命令。同样可以先用--dry-run --json预览删除请求而不改动电子表格gog sheets table delete $spreadsheet_id $table_id --dry-run --json当前范围与设计边界gog sheets table命令族目前有意覆盖list、get、create、append、clear数据行与deleteinternal/cmd/sheets_table.go。表格更新update与页脚编辑footer editing不在其内原因在 docs/sheets-tables.md 的 Current Scope 一节有明确说明普通的 Sheets 区域 API 若被盲目使用可能误改表格的表头行或页脚行这两类操作需要独立的语义设计。这也解释了gog sheets delete-dimension为何会被特别实现为删除行列时保留相交表格。常见 Flags全命令族共享的安全与输出控制gog sheets table及其子命令共享 gogcli 的全局 Flags完整清单见 gog-sheets-table.md。与表格操作最相关的一批Flag类型/默认用途-n/--dry-run/--noop/--previewbool不执行变更打印预期动作并成功退出适合 CI 或演练-y/--force/--assume-yesbool跳过破坏性命令的交互确认clear/delete 场景-j/--json/--machineboolfalse输出 JSON 到 stdout便于脚本消费-p/--plain/--tsvboolfalse输出稳定的、可解析的 TSV 文本无颜色-a/--account/--acctstring账户邮箱、别名或auto--clientstringOAuth 客户端名选择对应凭据与令牌桶--access-tokenstring直接使用提供的访问令牌绕过存储的刷新令牌约 1 小时过期--quota-projectstring指定计费的 Google Cloud 项目发送X-Goog-User-Project头--readonlyboolfalse运行时拦截一切变更型 API 请求--no-input/--non-interactivebool永不提示无法交互时直接失败CI 友好--wrap-untrustedboolfalse在 JSON/raw 输出中为获取到的外部文本字段包裹不受信内容标记快速上手指南# 1. 创建表格表头 类型化列 gog sheets table create $id Sheet1!A1:C4 \ --name Tasks \ --columns-json columns.json # 2. 查看表格元数据JSON 含 tableId / name / sheetTitle / A1 / 类型化列 gog sheets table get $id Tasks --json # 3. 追加数据行自动扩表不碰表头 gog sheets table append $id Tasks Write docs|2|true,Review PR|1|false # 4. 预览清空数据行不触网 gog sheets table clear $id Tasks --dry-run --json # 5. 实际清空数据行需 --force 交互确认 gog sheets table clear $id Tasks --force # 6. 删除行/列且保留相交表格 gog sheets delete-dimension $id Sheet1!2:3 --dimension ROWS --force # 7. 删除表格必须先确认丢弃数据 gog sheets table delete $id Tasks --discard-data --force更多细节可继续查阅 gog-sheets-table-create.md、gog-sheets-table-append.md、gog-sheets-table-clear.md、gog-sheets-table-delete.md 以及命令总索引 docs/commands/README.md。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表