ARTICLE DETAIL

资讯详情

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

gogcli `gog sites list` 命令详解:在终端中列出 Drive 可见的 Google Sites

gogcli `gog sites list` 命令详解:在终端中列出 Drive 可见的 Google Sites gogcligog sites list命令详解在终端中列出 Drive 可见的 Google Sites【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli导读gog sites list是 gogcli 中用于枚举当前账号可见 Google Sites新版 Google 站点底层以 Drive 文件形式存储的核心命令。它不直接调用 Sites API而是通过 Drive API v3 按 MIME 类型application/vnd.google-apps.site过滤文件列表因此天然继承了 Drive 的分页、共享云端硬盘shared drive与查询语法能力。读完本文你将掌握该命令的完整用法、全部参数语义、底层查询构造逻辑以及如何用--query、--json、--plain等参数在脚本化场景中稳定获取站点清单。命令概览与定位gog sites list属于gog sites命令族该命令族整体面向“以 Drive 为后端的 Google Sites”场景共包含四个子命令见 gog sites子命令别名功能gog sites getinfo、show获取单个站点元数据gog sites listls列出 Drive 中可见的 Google Sitesgog sites searchfind按文本或 Drive 查询语法搜索站点gog sites urlopen打印站点编辑器 URL从源码结构看sites.go 中SitesCmd通过 kong 将上述子命令挂载到sites名下其中List字段定义了aliases:ls因此gog sites ls与gog sites list完全等价。基本用法gog sites (site) list (ls) [flags]最简调用直接列出当前账号可见的 Google Sitesgog sites list默认行为要点与 Drive 文件列表命令保持一致结果按modifiedTime desc修改时间倒序排列默认单页最多返回 20 条由--max/--limit控制默认值20默认包含共享云端硬盘中的站点--all-drives默认true无结果时向 stderr 输出提示信息No sites并以成功状态退出。Flags 完整参考以下为gog sites list的全部参数与 原文档 一致并补充了部分参数含义的源码级说明Flag类型默认值说明--access-tokenstring直接使用提供的 access token绕过已存储的 refresh tokentoken 约 1 小时过期-a、--account、--acctstring账号邮箱、别名或auto用于已认证的 Google API 命令--all-drivesbooltrue包含共享云端硬盘默认 true使用--no-all-drives仅查询 My Drive--clientstringOAuth 客户端名称选择对应的已存凭据与 token 桶--colorstringauto颜色输出auto|always|never--disable-commandsstring逗号分隔的禁用命令列表支持点路径--drive、--drive-idstring限定到某个共享云端硬盘使用corporadrive与driveId与--no-all-drives互斥-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最适合脚本化--max、--limitint6420单页最大结果数--no-input、--non-interactive、--noninteractivebool永不提示失败即报错适合 CI--page、--cursorstring分页 token-p、--plain、--tsvboolfalse输出稳定的、可解析的纯文本TSV无颜色--querystring附加的 Drive 查询过滤条件--quota-projectstring计费的 Google Cloud 项目作为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 输出中将抓取的文本字段包裹在外部不可信内容标记内其中--max、--page、--query、--all-drives、--drive是SitesListCmd自身声明的参数见 sites.go其余为所有 Google API 命令共享的全局旗标。--max的语义是单页大小而非总数上限返回结果超过一页时JSON 输出中的nextPageToken可用于--page继续翻页。实战示例限定数量并按需翻页# 只取前 5 个站点 gog sites list --max 5 # 使用上一页返回的 token 获取下一页 gog sites list --max 5 --page CkxxxtgK...仅查看我的云端硬盘中的站点gog sites list --no-all-drives只看某个共享云端硬盘中的站点gog sites list --drive 0AFxxxxxxxxxxxxxxxxxxxxx注意--drive与--no-all-drives互斥同时指定会在调用任何 API 之前直接报 usage 错误。附加 Drive 查询过滤--query传入的过滤条件会与原生的“站点类型 未进回收站”约束做 AND 组合gog sites list --query name contains Team gog sites list --query fullText contains onboarding脚本化输出# JSON 输出含 nextPageToken 信封字段便于翻页 gog sites list -j # 仅主结果丢弃信封字段 gog sites list -j --results-only # 稳定的 TSV 输出无颜色、无表格边框便于 awk/cut 解析 gog sites list -p # CI 环境禁止交互提示 gog sites list --no-input源码级原理查询是如何构造的gog sites list的实现集中在 sites.go 的SitesListCmd.Run其核心是buildSitesQuery函数sites.go。整个查询构造分三步类型约束使用常量googleSitesQuery mimeType application/vnd.google-apps.site锁定 Google Sites 的 MIME 类型常量定义见 drive.go用户条件合并若用户通过--query传入了条件则以(用户条件) and mimeType ...的形式 AND 组合若未传则仅使用类型约束回收站排除若最终查询中没有trashed true|false谓词由hasDriveTrashedPredicate通过正则(?i)\btrashed\b\s*(?:|!)\s*(?:true|false)\b检测自动追加and trashed false即默认不返回回收站中的站点。以gog sites list --query name contains Team为例最终发给 Drive API 的q参数为(name contains Team) and mimeType application/vnd.google-apps.site and trashed false这一步在 sites_test.go 的TestSitesListAndSearchConstrainToGoogleSites中被显式验证测试断言发出的每个查询都同时包含googleSitesQuery与trashed false约束。底层调用链与输出行为SitesListCmd.Run的调用链如下参数校验--drive与--no-all-drives冲突时报错--max 0时报错max must be 0。校验发生在创建 Drive 服务之前sites_test.go 用“不应触发服务工厂”的测试保证了这一点获取服务requireSitesDriveService先通过requireAccount解析账号再调用sitesDriveService创建 Drive v3 客户端googleapi/sites.go 显示其内部使用drive.NewService与ServiceSites服务标识执行列表listDriveFilesdrive_listing.go发出files.list请求依次设置q、pageSize即--max、pageToken即--page、orderBymodifiedTime desc并根据--all-drives/--drive决定corpora与driveId支持同时使用默认字段掩码driveFileListFieldsdrive_fields.go——nextPageToken, files(id, name, mimeType, size, modifiedTime, parents, webViewLink, owners(emailAddress), driveId, hasThumbnail, thumbnailLink, shortcutDetails(...))输出writeDriveFileListdrive_listing.go负责格式化结果JSON 模式下输出{files: [...], nextPageToken: ...}信封结构配合--results-only可丢弃信封文本/表格模式下按列渲染文件列表若结果为空则向 stderr 打印No sites并正常退出不视为错误若存在下一页会输出翻页提示引导使用--page继续。与其他 sites 子命令的配合定位单个站点先用gog sites list或gog sites search拿到站点id再用gog sites get siteId查看元数据——get支持传 Drive 文件 ID 或sites.google.com编辑器 URLnormalizeGoogleID会从 URL 中提取 ID见 googleid.go打开编辑页gog sites url siteId会打印站点的webViewLink缺失时回退构造https://sites.google.com/d/id/edit类型校验get与url都会校验目标文件的 MIME 类型非站点文件会报错file id is not a Google Sitesites_test.go 覆盖了该错误路径全文搜索需要按文本搜索站点时使用gog sites search其--raw-query/--raw标志可将输入原样当作 Drive 查询语言透传依然会强制追加站点类型约束否则默认按fullText contains query处理sites.go。注意事项与适用前提gog sites list依赖 Drive API因此前提是当前账号已通过gog auth完成认证且具备相应 Drive 可见权限站点必须对当前账号可见才会被列出--max是单页大小而非总条数上限完整拉取需要配合nextPageToken/--page翻页或在 JSON 模式下手动循环共享云端硬盘场景下如需限定单个 drive请使用--drive driveId不要与--no-all-drives混用命令帮助文档由gog schema --json自动生成运行make docs-commands更新如参数细节与本文描述存在差异以仓库内 docs/commands/gog-sites-list.md 及gog sites list --help的实时输出为准。延伸阅读gog sites 命令族总览gog sites get / gog sites search / gog sites urlgog drive ls同源的文件列表实现共享 listDriveFiles 底层命令索引核心实现sites.go、drive_listing.go、drive.go、googleapi/sites.go测试用例sites_test.go【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表