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

如何使用Google Apps Script将学生批量录入Google Classroom班级

Google Apps Script 批量导入Google Classroom学生实现方案

核心逻辑:Classroom.Invitations接口仅支持发送入班邀请,既无法修改用户姓名属性,也无法自定义邀请邮件内容,因此采用API组合调用+自定义邮件发送的方案实现需求,具体实现分两种场景:


前置配置

  • 打开Google Apps Script编辑器,在「服务」列表中添加Classroom API、Admin SDK Directory API(仅内部Workspace账号场景需要)
  • 确保操作账号拥有对应班级的教师/管理员权限,以及Workspace用户管理权限(内部账号场景需要)
  • 电子表格约定:A列为学生完整姓名、B列为学生绑定的谷歌邮箱、C列为对应班级ID,第一行为表头

场景1:学生为所属机构内部Google Workspace账号

该场景下你拥有账号信息修改权限,可以先更新学生姓名,再直接加入班级,无需用户手动确认:

function batchAddInternalStudents() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const rows = sheet.getDataRange().getValues();
  // 跳过表头行,从第二行开始处理
  for (let i = 1; i < rows.length; i++) {
    const [fullName, email, courseId] = rows[i];
    try {
      // 更新学生账号的姓名信息
      AdminDirectory.Users.update({
        name: {
          fullName: fullName
        }
      }, email);
      // 直接将学生加入对应班级,无需发送邀请
      Classroom.Courses.Students.create({
        userId: email
      }, courseId);
      // 自定义发送入班成功通知
      MailApp.sendEmail({
        to: email,
        subject: "【XX课程】入班成功通知",
        body: `您好${fullName},您已成功加入XX课程班级,可直接访问Google Classroom查看课程安排与学习资料。`
      });
      // 表格D列标记处理结果
      sheet.getRange(i + 1, 4).setValue("处理成功");
    } catch (e) {
      sheet.getRange(i + 1, 4).setValue(`处理失败:${e.message}`);
      console.error(`账号${email}处理失败:`, e);
    }
    // 每处理10条暂停1秒,避免触发API配额限制
    if (i % 10 === 0) {
      Utilities.sleep(1000);
    }
  }
}

场景2:学生为外部谷歌账号

该场景下你没有权限修改用户的个人资料,可发送入班邀请同时在自定义邮件中提示学生修改姓名:

function batchInviteExternalStudents() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const rows = sheet.getDataRange().getValues();
  for (let i = 1; i < rows.length; i++) {
    const [fullName, email, courseId] = rows[i];
    try {
      // 发送官方入班邀请
      Classroom.Invitations.create({
        courseId: courseId,
        userId: email,
        role: "STUDENT"
      });
      // 发送自定义通知邮件,提示用户修改姓名
      MailApp.sendEmail({
        to: email,
        subject: "【XX课程】入班邀请通知",
        body: `您好${fullName},您已收到XX课程的入班邀请,请查收谷歌官方发送的邀请邮件确认加入。为方便老师核对身份,建议您进入班级后将个人资料姓名更新为${fullName}。`
      });
      sheet.getRange(i + 1, 4).setValue("邀请已发送");
    } catch (e) {
      sheet.getRange(i + 1, 4).setValue(`处理失败:${e.message}`);
    }
    if (i % 10 === 0) {
      Utilities.sleep(1000);
    }
  }
}

批量处理注意事项

  • Google Classroom API默认配额为每分钟100次请求,2000条数据建议分批次运行,或按上述代码添加延迟逻辑,避免触发配额超限报错
  • 正式全量运行前,建议先使用3-5个测试账号验证流程正常
  • 若运行中途中断,可根据表格D列的标记跳过已处理的行,继续执行剩余任务

内容的提问来源于stack exchange,提问作者LUCA DELLA GHEZZA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:27:04