资讯中心

gogcli `gog slides list-slides` 实战指南:用命令行列出 Google Slides 全部幻灯片 ID 与跳过状态

📅 2026/9/29 23:41:50
gogcli `gog slides list-slides` 实战指南:用命令行列出 Google Slides 全部幻灯片 ID 与跳过状态
gogcligog slides list-slides实战指南用命令行列出 Google Slides 全部幻灯片 ID 与跳过状态【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcligog slides list-slides是 gogcliGoogle Workspace in your terminal提供的一个只读命令用于一次性列出某个 Google Slides 演示文稿中每一页幻灯片的 object ID 与跳过skipped状态。它既是快速浏览演示文稿结构的清单工具也是脚本化后续操作复制、移动、跳过、删除幻灯片的前置探针几乎所有gog slides的幻灯片级操作都要求先拿到稳定的 object ID而本命令正是获取这一关键信息的标准入口。读完本文你将掌握该命令的完整语法、三种输出模式默认表格 / JSON / TSV、全部可用 Flags并能结合源码理解其底层调用链与输出结构。命令概览gog slides list-slides位于gog slides命令组之下该命令组注册于 internal/cmd/slides.go支持别名slide因此gog slides slide list-slides同样可执行。其帮助说明为List all slides with their object IDs and skipped state基础语法位置参数presentationId必填gog slides (slide) list-slides presentationIdpresentationId是 Google Slides 演示文稿的 ID可从其 Drive 分享链接中提取通常形如1AbC...xyz。该命令只调用一次只读的Presentations.Get接口不产生任何副作用因此天然适合放进脚本流水线中反复执行。一个完整的示例gog slides list-slides 1AbCdefghIJKlmnoPQRstUV三种输出模式默认表格、JSON 与 TSV该命令的输出行为由--json与--plain等价--tsv两个全局 Flag 决定对应实现位于 internal/cmd/slides_list_slides.go。三种模式面向三类使用场景人工查看、脚本解析、LLM/工具消费。默认模式人类可读表格不带任何输出 Flag 时命令先打印一行摘要Presentation: title (n slides)随后用 tabwriter 输出三列表格Presentation: Q3 Board Deck (3 slides) # OBJECT ID SKIPPED 1 slide-1 true 2 slide-2 false 3 slide-3 false#幻灯片序号从 1 开始与 Slides 编辑器的页码观感一致但注意这是 gogcli 计算出的展示序号并非 API 层的绝对位置索引OBJECT ID该页幻灯片的 object ID是后续所有逐页操作如duplicate-slide、move-slide、skip-slide、read-slide必须引用的稳定标识SKIPPED布尔值true表示该页在演示模式下被跳过见下文「跳过状态详解」。从源码看默认模式使用的是 Go 标准库text/tabwriter列宽自动对齐分隔符为 4 个空格并逐行输出#\tOBJECT ID\tSKIPPED。JSON 模式脚本与程序消费添加-j/--json/--machine等价别名后命令输出结构化 JSON整体信封结构包含四个字段{ presentationId: 1AbCdefghIJKlmnoPQRstUV, title: Q3 Board Deck, slideCount: 3, slides: [ { number: 1, objectId: slide-1, isSkipped: true }, { number: 2, objectId: slide-2, isSkipped: false }, { number: 3, objectId: slide-3, isSkipped: false } ] }字段说明字段类型含义presentationIdstring请求时传入的演示文稿 IDtitlestring演示文稿标题来自 API 响应slideCountint幻灯片总页数等于slides数组长度slides[].numberint从 1 开始的序号slides[].objectIdstring幻灯片 object IDslides[].isSkippedbool是否在演示模式下跳过JSON 模式特别适合与jq等工具链组合例如提取全部 object ID 供后续批处理gog slides list-slides presentationId --json \ | jq -r .slides[].objectIdPlain / TSV 模式稳定可解析文本添加-p/--plain/--tsv后输出收敛为纯两列 TSV#与OBJECT ID刻意省略 SKIPPED 列# OBJECT ID 1 slide-1 2 slide-2 3 slide-3这一点由测试 internal/cmd/slides_list_slides_test.go 明确锁定TestSlidesListSlidesPlainPreservesExistingColumns断言 plain 输出中不得包含SKIPPED字样或布尔值同时保留OBJECT ID列。因此 plain 模式是面向需要「固定列结构」的 awk/cut 类脚本而设计的——列数稳定解析结果不受后续版本新增列影响。跳过状态skipped详解SKIPPED/isSkipped字段反映的是 Google Slides 的「跳过幻灯片」特性在演示presentation mode时被标记为跳过的页面不会展示给观众但仍然完整保留在演示文稿中可继续编辑。gogcli 为此提供了配套命令gog slides skip-slide presentationId slideId gog slides unskip-slide presentationId slideIdhide-slide与unhide-slide分别是两者的别名。skip 与 unskip 都是变更类操作而list-slides是观察这类状态变更的只读窗口执行unskip-slide后再次运行list-slides --json对应条目的isSkipped应变为false。这一「改前看、改后验」的工作流在 docs/slides-structure.md 中有完整叙述。底层判断逻辑非常简单见 internal/cmd/slides_list_slides.gofunc slideIsSkipped(slide *slides.Page) bool { return slide ! nil slide.SlideProperties ! nil slide.SlideProperties.IsSkipped }即每个Page的SlideProperties.IsSkipped布尔字段slide或SlideProperties为 nil 时安全地返回false。典型实战object ID 驱动的幻灯片编排list-slides最常见的用法是与duplicate-slide、move-slide配合构成「定位 ID → 操作 → 复核顺序」闭环详见 docs/slides-structure.md# 1. 拿到所有幻灯片 ID 与当前顺序 gog slides list-slides presentationId --json # 2. 复制某页并指定插入位置0 为起始 gog slides duplicate-slide presentationId slideId --to-index 2 # 3. 移动某页到最前 gog slides move-slide presentationId slideId --to-index 0 # 4. 复核结果顺序list-slides 可再次确认 gog slides list-slides presentationId --json要点提示来自同文档duplicate-slide不带--to-index时Google 会把副本紧跟在源页之后带--to-index时复制与定位在同一次 batch update内完成。move-slide的索引是零基的且指移动之前演示文稿中的顺序与 Slides API 语义一致索引取值范围为 0 到幻灯片总数。所有变更类操作都支持--dry-run --json可在不接触 Google 的情况下预览将要提交的 batch 请求配合list-slides --json做「改后验证」是最稳妥的脚本模式。对只读场景而言list-slides也可作为gog slides raw presentationId完整转储Presentations.Get原始响应的轻量替代前者只抽取序号、ID、跳过状态三个维度的摘要后者则是无损全量 JSON供需要完整结构的场景使用。全局 Flags 完整参考以下 Flags 由 gogcli 全局命令层提供由gog schema --json生成见 docs/commands/README.md对list-slides均适用其中输出相关项已在上文展开Flag类型默认值说明--access-tokenstring直接使用提供的访问令牌绕过已存储的刷新令牌令牌约 1 小时后过期-a--account--acctstring账户邮箱、别名或auto用于需要认证的 Google API 命令--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 的 config/data/state/cache 根目录等价于GOG_HOME-j--json--machineboolfalse向 stdout 输出 JSON最适合脚本--no-input--non-interactive--noninteractivebool永不提示改为失败退出适合 CI-p--plain--tsvboolfalse向 stdout 输出稳定、可解析的纯文本TSV无颜色--quota-projectstring计费到该 Google Cloud 项目的 API 用量作为X-Goog-User-Project发送某些 API 与--access-token/ADC 组合使用时要求该参数--readonlyboolfalse运行时阻止一切变更型 API 请求auth add同时只申请只读 OAuth scope--results-onlyboolJSON 模式下仅输出主结果丢弃nextPageToken等信封字段--select--pick--projectstringJSON 模式下按逗号分隔选择字段尽力而为支持点路径推荐多数命令改用--fields-v--verbosebool开启详细日志--versionkong.VersionFlag打印版本号并退出--wrap-untrustedboolfalseJSON/raw 输出时将抓取的文本字段包裹在「外部不可信内容」标记中注意--dry-run对list-slides这类只读命令本身没有实际意义命令本来就不产生变更但它与duplicate-slide、move-slide、skip-slide等配套命令组合时才是关键的安全开关。源码实现与测试验证底层调用链list-slides的完整执行链路很短属于典型的「一次 API 调用 格式化输出」模式命令定义internal/cmd/slides_list_slides.go 中SlidesListSlidesCmd声明唯一位置参数presentationIDarg: name:presentationId并在 internal/cmd/slides.go 以ListSlides SlidesListSlidesCmd cmd: name:list-slides注册进gog slides命令组。账户解析requireAccount(flags)根据--account/--client等解析出要使用的账户。服务获取slidesService(ctx, account)定义于 internal/cmd/runtime_services.go从运行时服务容器中取出已初始化的 Google Slides API 客户端若该服务未被启用或凭据缺失会返回带上下文的serviceError。API 调用slidesSvc.Presentations.Get(presentationID).Context(ctx).Do()即 RESTGET https://slides.googleapis.com/v1/presentations/{presentationId}。输出分发按上下文中的输出模式JSON / Plain / 默认分别走outfmt.WriteJSON、tabwriter 或逐行打印分支。另外presentationID在调用前会经过strings.TrimSpace清理若为空则返回usage(empty presentationId)错误避免构造出无意义的 API 请求。测试用例internal/cmd/slides_list_slides_test.go 用httptest模拟 Slides API 服务器覆盖了三个关键契约TestSlidesListSlidesUsesRuntimeOutput默认输出包含Presentation: Deck (2 slides)标题、OBJECT ID与SKIPPED表头且每行按序号 objectId isSkipped对齐1 slide-1 true/2 slide-2 false。TestSlidesListSlidesJSONIncludesSkippedStateJSON 输出可反序列化slides[0].isSkipped为true、slides[1].isSkipped为false证明isSkipped字段被正确传递。TestSlidesListSlidesPlainPreservesExistingColumnsplain 模式下输出不得包含SKIPPED或布尔值但必须保留OBJECT ID列保证 TSV 列结构长期稳定。这三个用例与实现一一对应可作为「命令行为契约」来阅读理解list-slides的每个输出细节。参见gog slides 命令组同一组的其他幻灯片操作命令new-slide、duplicate-slide、move-slide、skip-slide、raw 等Slides 结构操作指南list-slides 与 duplicate/move/skip 组合编排的完整实战命令索引全部 gogcli 命令一览【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案