You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:23:17