如何用Google Apps Script自动提交Google Classroom学生作业?
解决Google Classroom自动提交作业的脚本问题
关于id参数的说明
你提到的courses.courseWork.studentSubmissions.turnIn方法中的id参数,对于当前用户(脚本运行者)的作业提交,直接填写self即可——这个特殊值会自动关联你自己的提交记录,无需手动查找具体的提交ID。如果需要处理特定提交记录,也可以用对应提交的唯一ID。
完善后的自动提交脚本
以下是修正并完善后的脚本,可自动提交无需内容的未完成作业:
// 替换为你的实际课程ID const sampleClassID = 123456789012; function turnInWork() { // 获取指定课程的作业列表,空值处理避免报错 const courseWorkList = Classroom.Courses.CourseWork.list(sampleClassID).courseWork || []; // 遍历每个作业 for (const work of courseWorkList) { const courseWorkId = work.id; console.log(`处理作业:${work.title}(ID:${courseWorkId})`); try { // 获取当前用户该作业的提交记录 const submissions = Classroom.Courses.CourseWork.StudentSubmissions.list( sampleClassID, courseWorkId, { userId: 'me' } ).studentSubmissions || []; // 筛选出未提交的作业(针对无需内容的作业,状态通常为NEW/CREATED) const pendingSubmissions = submissions.filter(sub => sub.state === 'NEW' || sub.state === 'CREATED' ); // 批量提交待处理作业 pendingSubmissions.forEach(sub => { Classroom.Courses.CourseWork.StudentSubmissions.turnIn( sampleClassID, courseWorkId, 'self', // 用self指代当前用户的提交,无需指定具体ID {} ); console.log(`已提交作业:${work.title}`); }); } catch (err) { console.error(`处理作业${work.title}时出错:${err.message}`); } } }
关键注意事项
- 启用Classroom API:在Google Apps Script编辑器中,点击「扩展」→「Apps Script API」,找到Classroom API并启用;也可通过左侧「服务」面板添加Classroom服务。
- 权限授权:首次运行脚本时,需要完成授权流程,授予脚本访问你Classroom数据的权限。
- 作业状态适配:如果老师发布的作业状态有特殊情况,可根据实际返回的
state值调整筛选条件。
内容的提问来源于stack exchange,提问作者Adam Siemens-Rhodes
相关产品推荐
相关产品推荐

