
gogcli 实战指南用 gog classroom coursework 在终端中管理 Google Classroom 课程作业【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli本篇技术指南围绕 gogcli 的gog classroom coursework命令组展开讲解如何用一行命令行完成 Google Classroom 课程作业Coursework的列出、查看、创建、更新、删除与分派对象调整并深入剖析其背后的 API 调用链、参数校验逻辑与部分更新update mask机制。读完本文你将能够在终端、Shell 脚本或 AI Agent 工作流中全流程管理 Classroom 课程作业并学会利用--dry-run、--json、--readonly等安全开关进行可审计的自动化操作。命令总览结构、位置与子命令gog classroom coursework是 gogcli 中 Google Classroom 能力域下的一个命令分组用于管理课程内的作业Coursework。它的完整命令形态为gog classroom (class) coursework (work) command其中(class)与(work)表示classroom与coursework的简短别名即gog classroom coursework、gog class coursework、gog classroom work均可等价使用。该命令组在命令树中的位置为gog→ gog classroom →gog classroom coursework父命令gog classroom下还包含 announcements、courses、submissions、students、teachers、topics 等十余个兄弟命令组整体结构可在命令索引中查看。coursework分组下共注册了 6 个子命令全部定义于 internal/cmd/classroom_coursework.go子命令别名说明对应文档gog classroom coursework listls列出课程作业gog-classroom-coursework-list.mdgog classroom coursework getinfo, show查看单个作业gog-classroom-coursework-get.mdgog classroom coursework createadd, new创建作业gog-classroom-coursework-create.mdgog classroom coursework updateedit, set更新作业gog-classroom-coursework-update.mdgog classroom coursework deleterm, del, remove删除作业gog-classroom-coursework-delete.mdgog classroom coursework assigneesassign修改作业的分派对象gog-classroom-coursework-assignees.md每个子命令的使用方式与参数表分别在对应的命令文档中有完整记录本文后续将逐个讲解其参数含义、底层实现与典型用法。前置条件认证与全局 Flag所有 coursework 子命令都依赖 Google Classroom API 的 OAuth 认证。gog classroom coursework与父命令gog classroom共享同一组全局 flag完整表格见 gog-classroom-coursework.md最常用的认证相关参数如下Flag类型说明-a/--account/--acctstring指定账号邮箱、别名或auto用于已认证的 Google API 命令--clientstringOAuth 客户端名称用于选择已存储的凭据与 token 桶--access-tokenstring直接使用传入的 access token绕过已存储的 refresh tokentoken 约 1 小时过期--quota-projectstring指定计费的 Google Cloud 项目以X-Goog-User-Project头发送部分 API 在--access-token或 ADC 场景下要求设置若 Classroom API 未启用或凭据权限不足命令会报错并给出修复提示——该错误包装逻辑位于 internal/cmd/classroom_helpers.go当响应中出现accessNotConfigured或Classroom API has not been used时提示前往 Cloud Console 启用classroom.googleapis.com出现insufficientPermissions时提示执行gog auth add account --services classroom重新认证。除认证参数外以下全局 flag 对 coursework 的日常使用与脚本化至关重要-n/--dry-run/--dryrun/--noop/--preview不真正改动数据打印预期动作后成功退出适合变更前的预演。--readonly在运行时阻断所有写操作同时auth add也只申请只读 OAuth scope是巡检与审计场景的保险开关。-j/--json/--machineJSON 输出到 stdout适合脚本消费。-p/--plain/--tsv输出稳定的 TSV 纯文本无颜色适合管道处理。--no-input/--non-interactive/--noninteractive绝不交互式提问无法继续时直接失败适合 CI。-y/--force/--assume-yes/--yes跳过破坏性命令的确认。--enable-commands/--enable-commands-exact/--disable-commands按点分路径如classroom.coursework.create启用或禁用命令用于限制 Agent 可执行范围。--home覆盖 gogcli 的 config/data/state/cache 根目录等价于环境变量GOG_HOME。--wrap-untrusted在 JSON/raw 输出中为抓取到的文本字段包上外部不可信内容标记防止内容注入。列出课程作业gog classroom coursework listlist用于按条件分页拉取某课程下的作业列表用法为gog classroom (class) coursework (work) list (ls) courseId [flags]courseId是必需位置参数接受课程 ID 或别名。该子命令独有参数包括Flag类型默认值说明--statestring作业状态过滤逗号分隔取值DRAFT、PUBLISHED、DELETED--topicstring按 Topic ID 过滤--order-bystring排序例如updateTime desc、dueDate desc--max/--limitint64100最大返回条数--page/--cursorstring分页 token--all/--all-pages/--allpagesbool拉取全部分页--scan-pagesint3按 topic 过滤时需要扫描的页数--fail-empty/--non-empty/--require-resultsbool无结果时以退出码 3 退出从源码实现看internal/cmd/classroom_coursework.golist复用了一个针对课程内可按 topic 过滤的分页列表的通用框架runClassroomTopicList定义于 internal/cmd/classroom_list_helpers.go。该框架的行为要点空courseId或max 0会直接返回用法错误usage(empty courseId)、usage(max must be 0)--state会被统一转为大写后拆分见upperClassroomStates当指定--all时拉取全部分页再在内存中按 topic 过滤filterClassroomTopicItems未指定--all时则借助scanClassroomTopicPages最多扫描--scan-pages默认 3 页来定位匹配 topic 的条目避免为一次过滤拉取全量数据输出通过writeClassroomPagedList统一渲染无结果时提示 No courseworkJSON 模式下列表字段名为coursework。典型用法示例# 列出课程 c123456 下已发布的作业最多 100 条按更新时间倒序 gog classroom coursework list c123456 --state PUBLISHED --order-by updateTime desc # 按主题过滤并拉取全部分页输出 JSON gog classroom coursework list c123456 --topic t1 --all -j # 脚本化结果为空时以退出码 3 退出 gog classroom coursework list c123456 --fail-empty查看单个作业gog classroom coursework getget用于获取单个作业的完整信息用法为gog classroom (class) coursework (work) get (info,show) courseId courseworkId两个位置参数分别是课程 ID或别名与作业 ID。实现位于 internal/cmd/classroom_coursework.go底层调用 Classroom API 的Courses.CourseWork.Get。若参数为空会返回用法错误。文本模式下的输出为键值对形式依次包含id、title以及仅当非空时description、state、type、due由DueDate/DueTime通过formatClassroomDue合并为YYYY-MM-DD HH:MM格式、scheduled、topic_id、max_points、link作业在 Classroom 中的AlternateLink地址。-j模式下则输出{coursework: {...}}的完整对象。gog classroom coursework get c123456 cw789 gog classroom coursework get c123456 cw789 -j创建作业gog classroom coursework createcreate用于新建作业用法为gog classroom (class) coursework (work) create (add,new) --titleSTRING courseId [flags]--title是必填参数。其余作业相关参数如下Flag类型默认值说明--typestringASSIGNMENT作业类型ASSIGNMENT、SHORT_ANSWER_QUESTION、MULTIPLE_CHOICE_QUESTION--statestring状态PUBLISHED、DRAFT--descriptionstring作业说明--max-pointsfloat64满分--duestring截止日期/时间RFC3339 或YYYY-MM-DD [HH:MM]--due-datestring截止日期YYYY-MM-DD--due-timestring截止时间HH:MM或HH:MM:SS--scheduledstring定时发布时间RFC3339--topicstringTopic ID创建流程internal/cmd/classroom_coursework.go首先调用buildClassroomCourseworkCreatePlan构造请求计划internal/cmd/classroom_coursework_plan.go该函数完成如下规范化与校验去除courseId、title两端的空白两者为空时报empty courseId/empty titleworkType与state统一转为大写测试覆盖见 internal/cmd/classroom_coursework_plan_test.go截止时间解析走resolveClassroomCourseworkDueinternal/cmd/classroom_coursework_plan.go若提供--due则整体解析否则分别解析--due-date与--due-time其中时间解析仅接受HH:MM或HH:MM:SS格式且仅提供时间而没有日期会报due time requires a due date--due支持 RFC3339 或YYYY-MM-DD [HH:MM]解析细节见parseClassroomDueinternal/cmd/classroom_helpers.go。计划构建通过后命令会先执行dryRunExit检查--dry-run模式下打印course_id与构造好的coursework对象后退出随后调用Courses.CourseWork.Create真正创建。成功后在文本模式输出id、title、state三行键值对JSON 模式输出{coursework: created}。# 创建一篇 DRAFT 状态的普通作业满分 10 分截止 2026-09-30 23:59 gog classroom coursework create c123456 \ --title Week 6 Reading \ --description Read chapters 10-12 \ --state DRAFT \ --max-points 10 \ --due-date 2026-09-30 \ --due-time 23:59 # 定时发布的问答题预览模式不真正创建 gog classroom coursework create c123456 \ --title Midterm Essay \ --type SHORT_ANSWER_QUESTION \ --scheduled 2026-10-01T08:00:00Z \ --dry-run更新作业gog classroom coursework updateupdate用于修改既有作业用法为gog classroom (class) coursework (work) update (edit,set) courseId courseworkId [flags]其可更新字段与create几乎一致--title、--description、--state、--max-points、--due/--due-date/--due-time、--scheduled、--topic但没有任何必填字段——未指定任何更新项时会报no updates specified。实现上buildClassroomCourseworkUpdatePlaninternal/cmd/classroom_coursework_plan.go会为每个非空的输入字段收集对应的字段名并生成updateMask例如同时更新标题、状态、满分与截止时间时掩码为title,state,maxPoints,dueDate,dueTime测试断言见 internal/cmd/classroom_coursework_plan_test.go。请求最终以Courses.CourseWork.PatchUpdateMask的形式提交internal/cmd/classroom_coursework.go从而实现仅修改用户显式指定的字段、不触碰其余字段的部分更新语义。--dry-run模式下会输出course_id、coursework_id、update_mask、update_fields与构造好的coursework对象方便在真正提交前核对将要改动哪些字段。# 仅修改标题与满分其余字段保持不变 gog classroom coursework update c123456 cw789 --title Week 6 Reading (Revised) --max-points 20 # 预演查看本次更新会改动哪些字段 gog classroom coursework update c123456 cw789 --state PUBLISHED --dry-run删除作业gog classroom coursework deletedelete用于删除指定作业用法为gog classroom (class) coursework (work) delete (rm,del,remove) courseId courseworkId删除是破坏性操作实现复用了通用的课堂删除流程runClassroomDeleteinternal/cmd/classroom_coursework.go底层调用Courses.CourseWork.Delete。建议配合--dry-run先预演、再用-y跳过确认执行gog classroom coursework delete c123456 cw789 --dry-run gog classroom coursework delete c123456 cw789 -y在 Agent 自动化场景中可用--readonly全局开关确保任何情况下都不会真正执行删除。调整分派对象gog classroom coursework assigneesassignees子命令用于修改作业分派给哪些学生用法为gog classroom (class) coursework (work) assignees (assign) courseId courseworkId [flags]其独有参数Flag类型说明--modestring分派模式ALL_STUDENTS全体学生、INDIVIDUAL_STUDENTS指定学生--add-student[]string要新增分派的学生 ID 列表逗号分隔--remove-student[]string要移除分派的学生 ID 列表逗号分隔底层实现internal/cmd/classroom_coursework.go会构造ModifyCourseWorkAssigneesRequest包含AssigneeMode与ModifyIndividualStudentsOptions先通过validateClassroomAssigneeChanges校验模式与增删列表的组合是否合法再调用 Classroom API 的Courses.CourseWork.ModifyAssignees完成变更返回更新后的作业对象。# 将作业分派给指定两名学生 gog classroom coursework assignees c123456 cw789 \ --mode INDIVIDUAL_STUDENTS \ --add-student stu_1001,stu_1002 # 收回某学生的分派权限 gog classroom coursework assignees c123456 cw789 \ --mode INDIVIDUAL_STUDENTS \ --remove-student stu_1003输出与脚本化JSON、TSV 与安全护栏coursework全家族命令都继承 gogcli 统一的输出与安全模型使其天然适合被 Shell 脚本、CI 与 LLM Agent 驱动-j/--json结构化输出列表的 JSON 键为coursework创建/获取/更新返回{coursework: {...}}可配合--results-only只保留主结果丢弃nextPageToken等信封字段或配合--select只挑出指定字段。-p/--plain/--tsv无颜色、稳定的 TSV 输出便于awk/cut直接解析。--fail-emptylist 专属无结果时以退出码 3 退出便于脚本做有结果才继续的分支判断。--no-input非交互模式无法继续时直接失败保证 CI 不悬挂等待输入。--readonly--wrap-untrusted前者在运行时阻断一切写 API后者对抓取的外部文本加不可信标记共同构成读取外部内容时的安全边界。--enable-commands-exact classroom.coursework.create等可把 CLI 收缩到仅允许指定的命令前缀适合把 gogcli 作为受限工具暴露给 Agent。小结与进一步阅读gog classroom coursework将 Google Classroom 作业的完整生命周期list → get → create → update → delete → assignees收敛为一组语义清晰、别名友好的子命令并通过 plan 构建 参数校验 update mask 的部分更新机制在保证数据安全的前提下实现了可预测、可审计、可脚本化的作业管理。想深入整个 Classroom 能力域可继续阅读gog classroom课程、公告、作业提交、花名册、主题等完整命令组gog classroom topics作业所属 Topic 的管理gog classroom submissions作业提交的评分与退回命令索引全部命令的参考文档底层实现可分别参考 classroom_coursework.go、classroom_coursework_plan.go、classroom_helpers.go 与 classroom_coursework_plan_test.go。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考