如何使用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
相关产品推荐
相关产品推荐

