gogcli 教程:使用 `gog classroom guardian-invitations get` 查询 Google Classroom 监护人邀请详情
gogcli 教程使用gog classroom guardian-invitations get查询 Google Classroom 监护人邀请详情【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcligog classroom guardian-invitations get是 gogcliGoogle Workspace in your terminalCLI 中用于按studentId与invitationId精确读取某条监护人Guardian邀请记录的只读命令。本文围绕该命令的完整用法展开先给出命令在 Classroom 命令树中的位置与别名体系再逐一讲解两个必选位置参数、纯文本TSV与 JSON 两种输出格式的字段语义最后结合仓库源码与测试用例剖析其底层调用链与错误处理方式帮助你把它接入自动化脚本或日常巡检流程。命令定位Classroom 命令树中的 guardian-invitations 分支在 gogcli 的 Classroom 子命令树中监护人邀请是独立于已建立的监护人关系guardians的一个分支。从源码 internal/cmd/classroom.go 可以看到顶层gog classroom同时挂载了两个相关命令组guardians别名guardian管理已生效的监护人记录list / get / deleteguardian-invitations别名guardian-invites管理待监护人接受的邀请list / get / create。guardian-invitations组内部由 internal/cmd/classroom_guardians.go 中的ClassroomGuardianInvitesCmd定义type ClassroomGuardianInvitesCmd struct { List ClassroomGuardianInvitesListCmd cmd: default:withargs aliases:ls help:List guardian invitations Get ClassroomGuardianInvitesGetCmd cmd: aliases:info,show help:Get a guardian invitation Create ClassroomGuardianInvitesCreateCmd cmd: aliases:add,new help:Create a guardian invitation }与监护人关系不同guardian-invitations只有创建与读取操作没有 delete/update因为邀请的生命周期待处理 PENDING / 已完成 COMPLETE由被邀请方或 Google 后台驱动。get命令定位是给定学生与邀请 ID获取一条邀请的完整快照对应文档 gog-classroom-guardian-invitations-get.md。用法语法与别名体系文档定义的标准用法如下gog classroom (class) guardian-invitations (guardian-invites) get (info,show) studentId invitationId括号表示可选等价写法因此以下命令完全等价gog classroom guardian-invitations get s1 gi1 gog classroom guardian-invites get s1 gi1 # 使用父命令别名 gog classroom guardian-invitations show s1 gi1 # 使用 get 的别名 gog classroom guardian-invites info s1 gi1 # 别名组合使用从命令行解析角度看这些别名全部由 go-kong 的aliases标签声明见ClassroomGuardianInvitesGetCmd的aliases:info,show与父命令的aliases:guardian-invites所以无论你习惯长名称还是短名称都会命中同一个Run方法。该命令属于纯读操作不需要--force/--yes确认也不会触发 dry-run 拦截配合文档中推荐的-j/--json或-p/--plain输出标志非常适合写入脚本或 Agent 工具链。位置参数详解命令只接受两个必选位置参数源码结构体定义见 internal/cmd/classroom_guardians.go参数类型说明studentIdstring学生 ID即 Classroom 学生资料的用户标识必填不可为空invitationIdstring监护人邀请 ID由 Classroom API 在创建邀请时分配必填不可为空参数校验在源码Run方法中显式完成studentId与invitationId均会先strings.TrimSpace去除首尾空白再判空任一为空都会返回usage错误对应empty studentId/empty invitationId错误码为命令行参数错误从项目测试可见参数类错误退出码为 2。如何拿到这两个 ID通常的组合路径是先列出学生gog classroom students courseId取得studentId再列出该学生的监护人邀请gog classroom guardian-invitations list studentId在输出中看到INVITATION_ID对应源码展示列INVITATION_ID最后用本命令针对具体invitationId做精确查询。输出格式TSV 纯文本与 JSONget命令会根据全局输出标志切换两种返回形态分支判断在 internal/cmd/classroom_guardians.go 中。纯文本模式默认 /-p/--plain/--tsv默认人类可读输出为key\tvalue的键值对形式稳定、可 parseid gi1 student_id s1 email guardianexample.com state PENDING created 2026-06-12T12:00:00Z字段语义与 Classroom API 的GuardianInvitation资源一一对应输出行来源字段说明idInvitationId邀请唯一标识student_idStudentId关联学生 IDemailInvitedEmailAddress被邀请的监护人邮箱地址stateState邀请状态取值PENDING待处理或COMPLETE已完成createdCreationTime创建时间RFC3339 格式仅当非空时才输出该行注意created行的条件输出逻辑源码if inv.CreationTime ! 这意味着当 Classroom API 未返回创建时间时纯文本输出中会缺少该行——脚本解析时不应假定字段固定存在。JSON 模式-j/--json/--machineJSON 模式下命令将完整资源包装在invitation键下输出{ invitation: { invitationId: gi1, studentId: s1, invitedEmailAddress: guardianexample.com, state: PENDING, creationTime: 2026-06-12T12:00:00Z } }该包装结构来自源码return outfmt.WriteJSON(ctx, stdoutWriter(ctx), map[string]any{invitation: inv})invitation键下是 Classroom Go SDKclassroom.GuardianInvitation序列化后的完整字段比纯文本模式多出 API 返回的全部原始属性如userId等可选字段适合需要完整数据的下游程序。若只要主结果、丢弃包裹层可叠加--results-only若要挑选字段可使用--select带点路径支持。全局 Flags 速查get命令自身只携带两个位置参数但继承 gogcli 全部全局标志。以下为文档 flags 表中与日常脚本使用最相关的一组完整清单见 gog-classroom-guardian-invitations-get.mdFlag类型默认作用-a/--account/--acctstring指定账户邮箱、别名或autoGoogle API 命令通用--clientstring指定 OAuth 客户端名选择对应凭证与令牌桶--access-tokenstring直接使用提供的访问令牌绕过存储的 refresh token令牌约 1 小时过期--quota-projectstring指定为 API 用量计费的 GCP 项目发送X-Goog-User-Project-j/--json/--machineboolfalseJSON 输出到 stdout脚本友好-p/--plain/--tsvboolfalse稳定可解析的 TSV 文本输出无颜色--results-onlyboolJSON 模式只输出主结果去掉 nextPageToken 等信封字段--select/--pick/--projectstringJSON 模式下按逗号分隔字段名选取尽力而为支持点路径--readonlyboolfalse运行时拦截一切变更类 API 请求本命令天然兼容--no-input/--non-interactivebool不提示、直接失败CI 场景--gmail-no-sendboolfalse阻止 Gmail 发送操作Agent 安全--dry-run/-nbool不实际执行打印预期动作后成功退出--enable-commands/--disable-commands/--enable-commands-exactstring以点路径白/黑名单限制可用命令Agent 沙箱场景--wrap-untrustedboolfalseJSON/raw 输出中对拉取的文本字段包裹外部不可信内容标记--homestring覆盖 gogcli 配置/数据/状态/缓存根目录等价GOG_HOME--colorstringauto颜色输出auto / always / never-v/--verbosebool开启详细日志-h/--helpkong.helpFlag上下文相关帮助针对本命令建议做审计查询时固定--account与--client避免歧义接入 CI 时加--no-input和--json若只关心某几个字段配合--select收敛输出体积。源码级实现一次查询背后的调用链get的Run方法internal/cmd/classroom_guardians.go执行顺序如下账户解析requireAccount(flags)从全局标志解析出当前 Google 账户参数校验trim 后判空空参数直接返回usage错误服务构建classroomService(ctx, account)创建 Classroom API 客户端失败时经wrapClassroomError包装为带上下文的友好错误API 调用核心一行inv, err : svc.UserProfiles.GuardianInvitations.Get(studentID, invitationID).Context(ctx).Do()即调用 Google Classroom API 的userProfiles.guardianInvitations.get端点Context(ctx)保证请求可被取消/超时控制输出分发按outfmt.IsJSON(ctx)选择 JSON 包装输出或纯文本键值输出。错误处理与空结果语义参数错误返回usage(...)退出码为 2测试TestExecute_ClassroomValidationErrors与TestExecute_ClassroomListInvalidMaxFailsBeforeService中参数类错误均断言ExitCode(err) ! 2API 错误统一wrapClassroomError包装保留 API 原始错误信息并附上下文找不到邀请由 Classroom API 返回404类错误同样经包装后以非零退出码呈现注意get与list --fail-empty的无结果语义不同list可用--fail-empty以退出码 3 表达空结果而get对不存在的 ID 直接走 API 错误路径。测试佐证仓库测试明确覆盖了该命令的端到端调用路径internal/cmd/execute_classroom_more_commands_test.go 中依次验证了list、get、create三个子命令的 JSON 执行runJSON(classroom, guardian-invitations, get, s1, gi1)internal/cmd/classroom_presentation_test.go 验证了邀请的列表展示列INVITATION_ID、EMAIL、STATE、CREATED展示定义见 internal/cmd/classroom_presentation.go与get纯文本输出的字段口径一致internal/cmd/dryrun_e2e_test.go 中 dry-run 操作码统一为classroom.guardian-invitations.create说明邀请的创建会走 dry-run 防护而get属只读操作不受影响。与兄弟命令的组合使用get通常与guardian-invitations组的其他命令配合gog classroom guardian-invitations list按学生分页列出邀请支持--email、--state逗号分隔的PENDING,COMPLETE、--max/--page/--all分页先用它拿到INVITATION_ID再精确getgog classroom guardian-invitations create为指定学生向某邮箱发起邀请--email必填创建后即可用get回查邀请状态形成创建→确认→跟踪闭环父命令入口 gog classroom 与完整命令索引 docs/commands/README.md 提供全量上下文。一个典型巡检场景示例# 列出学生 s1 名下所有待处理邀请逐条查看详情 gog classroom guardian-invitations list s1 --state PENDING --json | \ jq -r .invitations[].invitationId | while read -r gid; do gog classroom guardian-invitations get s1 $gid --plain done此处假设环境中可用jq做管道处理纯gog单命令场景可直接get单条。总结gog classroom guardian-invitations get studentId invitationId是 gogcli 面向 Classroom 监护人邀请场景提供的精确只读查询入口两个必选位置参数、info/show别名、TSV 与 JSON 双输出模式底层直连userProfiles.guardianInvitations.getAPI并通过统一参数校验与错误包装保证脚本可预期的退出行为。配合guardian-invitations的list与create足以覆盖邀请创建—查询—状态跟踪的完整运维链路配合全局--json、--no-input、--account等标志可无缝嵌入 CI 巡检与自动化工具。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考