gogcli 实战指南:用 `gog classroom guardian-invitations list` 管理 Google Classroom 监护人邀请

发布时间:2026/9/16 20:37:31
gogcli 实战指南:用 `gog classroom guardian-invitations list` 管理 Google Classroom 监护人邀请 gogcli 实战指南用gog classroom guardian-invitations list管理 Google Classroom 监护人邀请【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli导读gog classroom guardian-invitations list是 gogcliGoogle Workspace in your terminal中用于列出指定学生监护人邀请记录的核心命令。本文围绕该命令完整讲解其用法、参数语义、分页机制、过滤与状态筛选并结合仓库源码命令定义、分页助手、表格渲染与测试用例剖析其底层实现帮助你掌握在终端与脚本中批量查询监护人邀请、对接自动化运维场景的完整方法。命令概览一条命令四种写法该命令在 gogcli 的 Classroom 命令树中位于classroom → guardian-invitations之下支持多级别名官方文档给出的完整用法为gog classroom (class) guardian-invitations (guardian-invites) list (ls) studentId [flags]其中括号中的class、guardian-invites、ls均为别名因此下面四种写法等价gog classroom guardian-invitations list studentId gog class guardian-invites ls studentId gog classroom guardian-invites list studentId gog class guardian-invitations ls studentId位置参数studentId是必填的 Google Classroom 学生 IDuserProfiles.guardianInvitations.listAPI 要求按学生维度查询。从命令树定义看guardian-invitations的别名为guardian-inviteslist的别名为ls且list是该子命令树的默认命令cmd: default:withargs见 internal/cmd/classroom.go 与 internal/cmd/classroom_guardians.go。与它并列的子命令还包括get别名info,show与create别名add,new三者共同构成监护人邀请的完整操作闭环。命令特有参数过滤、状态与分页除全局通用 flag 外list命令专属的参数定义在 internal/cmd/classroom_guardians.go 中参数类型默认值说明studentIdstring—必填。学生 ID用于定位查询范围--emailstring空按受邀监护人邮箱地址精确过滤--statestring空邀请状态过滤逗号分隔取值PENDING,COMPLETE--max/--limitint64100单页最大结果数即传给 API 的 pageSize--page/--cursorstring空分页游标API 返回的 nextPageToken--all/--all-pages/--allpagesboolfalse自动翻页拉取全部结果--fail-empty/--non-empty/--require-resultsboolfalse无结果时以退出码 3 结束便于脚本判断状态过滤的源码细节--state参数在底层并不会被直接原样透传而是先经过upperClassroomStates做大写归一化该函数将逗号分隔的输入按 CSV 拆分后逐个strings.ToUpper见 internal/cmd/classroom_list_helpers.go。这意味着--state pending,complete、--state PENDING,COMPLETE均可被接受最终调用call.States(states...)传给 Google Classroom API。同理--email会先strings.TrimSpace去空白非空时才调用call.InvitedEmailAddress(email)见 internal/cmd/classroom_guardians.go。典型用法示例1. 基础查询列出某学生全部监护人邀请gog classroom guardian-invitations list student-id-123默认返回前 100 条--max默认值为 100输出为表格形式列头为INVITATION_ID、EMAIL、STATE、CREATED。这四列的定义见 internal/cmd/classroom_presentation.go分别取自InvitationId、InvitedEmailAddress、State、CreationTime字段输出前经sanitizeTab清洗以保证表格对齐。2. 按邮箱与状态组合过滤gog classroom guardian-invitations list student-id-123 \ --email guardianexample.com \ --state pending,complete服务端会同时应用邮箱过滤与状态过滤状态值不区分大小写。3. 拉取全部结果并限制单页大小gog classroom guardian-invitations list student-id-123 --all --max 50--all会忽略返回的nextPageToken在客户端自动翻页直至取完--max控制每次请求的pageSize。4. 手动翻页# 第一页 gog classroom guardian-invitations list student-id-123 --page # 用上一页返回的 nextPageToken 取下一页 gog classroom guardian-invitations list student-id-123 --page nextPageToken5. 脚本化JSON 输出 空结果检测gog classroom guardian-invitations list student-id-123 --json --fail-empty if [ $? -eq 3 ]; then echo no guardian invitations found fi--fail-empty在无结果时返回退出码 3便于 CI 或 Shell 脚本做存在性校验。输出格式与分页行为表格输出默认无结果时打印No guardian invitations提示有结果时以表格输出并在存在下一页时打印继续翻页的提示--all/--all-pages逻辑见 internal/cmd/classroom_list_helpers.go。JSON 输出-j/--json结果以信封结构输出到 stdout{ invitations: [ { invitationId: gi1, invitedEmailAddress: guardianexample.com, state: PENDING, creationTime: 2024-01-01T00:00:00Z } ], nextPageToken: gip }顶层键invitations为结果数组nextPageToken为翻页游标见 internal/cmd/classroom_list_helpers.go。如需只输出主结果、丢弃信封字段可加--results-only。其他常用全局 flag-p/--plain/--tsv输出稳定的 TSV 纯文本无颜色适合解析--select/--pick/--projectJSON 模式下按逗号分隔字段挑选输出支持点路径--max必须大于 0否则返回max must be 0的用法错误见 internal/cmd/classroom_list_helpers.go--account/--acct指定账户邮箱、别名或auto--client指定 OAuth 客户端名称--access-token直接使用访问令牌绕过存储的刷新令牌令牌约 1 小时过期--readonly运行时拦截所有变更类 API 请求--gmail-no-send用于阻断 Gmail 发送agent 安全场景--no-input禁止交互提示失败即退出适合 CI--home覆盖 gogcli 配置/数据/状态/缓存根目录等价于GOG_HOME。底层实现一次 list 调用经历了什么该命令的核心执行路径集中在两个文件参数定义与 API 调用internal/cmd/classroom_guardians.go 中的Run方法构造classroomPagedListOptions在fetch闭包内调用svc.UserProfiles.GuardianInvitations.List(studentID).PageSize(pageSize).Context(ctx)并按需追加PageToken、InvitedEmailAddress、States过滤条件最后执行Do()发起 HTTP 请求并返回resp.GuardianInvitations与resp.NextPageToken。分页与输出编排internal/cmd/classroom_list_helpers.go 中的runClassroomPagedList负责校验参数、调用loadPagedItems完成单页或全量翻页再交给writeClassroomPagedList统一处理表格/JSON 输出与空结果逻辑。loadPagedItems在--all时通过collectAllPages循环取完所有页见 internal/cmd/paged_list_helpers.go。测试用例命令行为如何被验证仓库通过 httptest 模拟 Classroom API 来验证该命令的完整链路。在 internal/cmd/execute_classroom_more_commands_test.go 中mock 服务器根据路径/userProfiles/.../guardianInvitations与 HTTP 方法分发响应GET 列表返回guardianInvitations数组与nextPageTokenGET 单条返回invitationId等字段POST 创建返回新邀请。测试随后以--email、--state、--max、--page等参数组合运行 JSON 模式见 internal/cmd/execute_classroom_more_commands_test.go同时覆盖--max 0、--max -1等非法参数的错误路径。表格渲染同样有独立单测internal/cmd/classroom_presentation_test.go 断言INVITATION_ID / EMAIL / STATE / CREATED四列的纯文本输出格式与字段映射完全一致确保默认人读输出稳定可解析。相关命令与延伸阅读创建监护人邀请gog classroom guardian-invitations create查询单条邀请gog classroom guardian-invitations get已确认的监护人管理gog classroom guardiansClassroom 命令树总览gog classroom全部命令索引命令索引【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考