
gogcli Slides 表格行删除实战gog slides table row delete命令用法、安全机制与源码解析【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli本指南以 gogcliGoogle Workspace in your terminal中负责删除幻灯片原生表格行的命令gog slides table row delete为对象完整讲解其命令语法、零基索引语义、全局参数体系并结合仓库源码剖析其底层的 Google Slides API 请求构造、破坏性操作确认与越界校验机制。读完本文你将能安全地在终端中删除 Google Slides 演示文稿任意表格的指定行并理解该命令在 dry-run、JSON 输出与并发冲突保护下的完整行为。命令概览与适用场景gog slides table row delete用于删除包含某个零基行索引zero-based单元格的表格行。它位于 gogcli 的 Slides 表格结构操作命令族中与行插入、行高设置共同构成gog slides table row子命令组见 gog slides table row。典型应用场景包括在自动化脚本或 CI 流程中按固定索引删除演示文稿模板中的冗余数据行配合gog slides table row insert见 插入命令文档实现先增后删的表格结构调整在 AI Agent 场景下以--dry-run先行预览将要提交的 API 请求确认无误后再真正执行删除。该命令在源码中通过 SlidesTableRowCmd 注册delete子命令声明了三个别名rm、remove、del因此以下写法等价gog slides table row delete --row2 presentationId tableObjectId gog slides table row rm --row2 presentationId tableObjectId gog slides table row del --row2 presentationId tableObjectId命令语法与核心参数根据 命令参考文档完整用法为gog slides (slide) table row delete (rm,remove,del) --rowINT-64 presentationId tableObjectId其中位置参数类型说明presentationIdstringGoogle Slides 演示文稿 ID必填取自演示文稿 URLtableObjectIdstring表格对象 ID必填可通过gog slides read-slide或gog slides info获取命令特有的标志为--rowFlag类型默认值说明--rowint64要删除的零基行索引必填在源码 SlidesTableRowDeleteCmd 中Row字段被标记为name:row required:即缺省该标志会被 CLI 解析器直接判为参数错误。零基索引与锚点单元语义需要特别强调的是--row并非直接定位整行而是定位该行内的一个锚点单元格。从实现上看命令构造的是 Google Slides API 的DeleteTableRowRequest其CellLocation固定为(row, 0)即目标行第一列源码见 internal/cmd/slides_table_structure.go#L110-L113request : slides.Request{DeleteTableRow: slides.DeleteTableRowRequest{ TableObjectId: tableID, CellLocation: slidesTableCellLocation(c.Row, 0), }}辅助函数 slidesTableCellLocation 生成TableCellLocation{RowIndex, ColumnIndex}并通过ForceSendFields确保零值如第 0 行、第 0 列也会被序列化进请求体。因此--row2的实际语义是删除包含单元格[2, 0]的那一行。这一细节对**合并单元格merged cell**场景尤其重要如果该单元格所在行与上下行合并成一个跨行单元格删除操作会连带删掉整个合并跨度。命令在确认提示中也明确告知了这一风险——a merged cell may span multiple rows见 源码 L123。全局 Flags 说明除--row外该命令继承 gogcli 的全部全局标志完整表格见 命令文档这里列出与表格行删除实操最相关的几组Flag类型默认值说明-a--account--acctstring指定账号邮箱、别名或auto进行 Google API 认证--access-tokenstring直接使用给定的访问令牌绕过存储的 refresh token令牌约 1 小时过期--clientstringOAuth 客户端名称选择对应的存储凭据与令牌桶-n--dry-run--dryrun--noop--previewbool不实际变更仅打印将要执行的操作后以成功状态退出-y--force--assume-yes--yesbool跳过破坏性命令的二次确认-j--json--machineboolfalse以 JSON 输出到 stdout最适合脚本处理-p--plain--tsvboolfalse以稳定的 TSV 纯文本输出--readonlyboolfalse在运行时拦截所有变更类 API 请求auth add时也仅申请只读 OAuth 范围--results-onlyboolJSON 模式下仅输出主结果丢弃 nextPageToken 等信封字段--select--pick--projectstringJSON 模式下按逗号分隔选择字段支持点路径best-effort--quota-projectstring计费所用的 Google Cloud 项目以X-Goog-User-Project头发送部分 API 配合--access-token或 ADC 时必须提供--homestring覆盖 gogcli 的 config/data/state/cache 根目录等价于GOG_HOME--no-input--non-interactivebool永不提示无法确认时直接失败适合 CI--disable-commands/--enable-commands/--enable-commands-exactstring按点路径dot path禁用或启用命令前缀用于限制 CLI 面Agent 安全-v--verbosebool开启详细日志-h--helpkong.helpFlag显示上下文相关的帮助信息源码级执行流程gog slides table row delete的完整执行链路如下核心代码见 internal/cmd/slides_table_structure.go#L102-L128参数清洗slidesTableTarget对presentationId与tableObjectId做 trim 与空值检查任一为空即返回usage错误源码 L343-L353。本地校验--row必须 0否则报--row must be 0。构造请求构建DeleteTableRowRequest锚点单元为(row, 0)。安全拦截runSlidesTableMutation检测到Destructive字段非空后调用dryRunAndConfirmDestructiveinternal/cmd/confirm.go#L55-L59——先执行 dry-run 短路再进入破坏性确认流程。预读演示文稿svc.Presentations.Get(...)拉取最新演示文稿通过 findSlidesTableByID 从各页面的PageElements含递归遍历ElementGroup.Children中定位目标表格。锚点越界校验validateSlidesTableAnchor用 provider 返回的真实表维度检查row是否落在[0, table.Rows-1]内源码 L365-L376。并发冲突保护若演示文稿带有RevisionId将其写入WriteControl.RequiredRevisionId源码 L330-L332确保在本地校验与提交之间演示文稿未被他人修改否则BatchUpdate会失败——这有效避免了基于过期行数删除的竞态。提交请求调用svc.Presentations.BatchUpdate(presentationID, body)将删除行请求与其他请求打包提交。破坏性确认与 dry-run删除行属于破坏性操作因此命令的slidesTableMutation结构中填充了Destructive描述源码 L123delete the row containing cell [row,0] from table tableObjectId (a merged cell may span multiple rows)dryRunAndConfirmDestructive首先调用 dryRunExit若传入--dry-run则不会创建 Slides 服务、不会触碰认证密钥环、不会发起任何 API 请求直接输出操作计划并以退出码 0 结束未加--dry-run时进入确认交互终端会询问是否继续删除输入y或--yes/--force跳过后才真正提交输入其他内容则返回cancelled错误退出码 1。测试 internal/cmd/slides_table_structure_test.go#L37-L50 专门验证了这一行为dry-run 模式下若尝试创建 Slides 服务测试会直接t.Fataldry-run must not create a Slides service同时校验生成的请求必须满足TableObjectId table1、CellLocation.RowIndex 1、CellLocation.ColumnIndex 0。越界拒绝策略当--row超出 provider 返回的实际行数时validateSlidesTableAnchor返回类似--row must be between 0 and N的错误此时请求不会到达 batchUpdate 端点。测试 TestSlidesTableStructure_RejectsProviderOutOfBounds 用 mock HTTP server 验证了越界请求绝不触达:batchUpdate这一保证。输出格式与脚本化使用命令成功后的默认文本输出为Deleted row 2 from table table1加--json时输出结构化结果见 源码 L121{deleted: true, presentationId: pres1, row: 2, tableObjectId: table1}该 JSON 结构与 dry-run 输出{dry_run: true, op: slides.table.row.delete, request: {...}}其中request.batch_update为完整请求体配合非常便于在脚本或 Agent 流程中先预览、再执行、后核验。安全删除实战示例# 1. 先以 dry-run 预览将要提交的 API 请求不会触发任何网络请求 gog slides table row delete --row2 --dry-run presentationId tableObjectId # 2. 交互式确认后真正删除会提示合并单元格风险 gog slides table row delete --row2 presentationId tableObjectId # 3. 非交互环境CI下自动跳过确认 gog slides table row delete --row2 --yes --accountmy-alias presentationId tableObjectId # 4. 脚本友好JSON 输出 仅保留主结果 gog slides table row delete --row2 --json --results-only presentationId tableObjectId建议在自动化删除前先通过gog slides read-slide或gog slides info确认表格当前行数与目标行内容避免误删同时注意 gogcli 提供的只读模式--readonly会从运行时层面拦截一切变更类请求可作为 Agent 安全兜底详见 safety-profiles 与 safety-profiles.md。关联命令与扩展阅读gog slides table row行操作父命令insert / delete / sizegog slides table row insert在零基行上方或下方插入行gog slides table row size设置行的最小高度gog slides table column delete删除包含零基列的整列语义与行删除对称锚点单元为(0, col)gog slides table表格操作命令族总览create / merge / unmerge / border / cell / row / columnCommand index全部命令索引【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考