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

如何用Google Apps Script匹配不同Google Sheets的师生数据并发邮件?

Google Apps Script 匹配教师数据并发送文档权限邮件

需求说明

  • 从Forms生成的学生数据库提取特定学生数据
  • 基于模板生成填充好数据的学生文档
  • 匹配学生的课程、班级与教师数据库的对应行,给匹配到的教师发送邮件并开放文档编辑权限

现有代码问题

原代码未遍历教师数据表的行进行匹配,直接将单个学生的course/class值与整列数组(teachercourse/teacherclass)做比较,逻辑完全错误,无法找到对应教师。此外仅添加了编辑器权限,未实现发送邮件的核心需求。

修正后的完整代码

// 生成学生文档副本(假设template、actualSheet、fila已提前定义)
var templateCopy = template.makeCopy("ficha_individual: " + actualSheet.getRange("C" + fila).getValue());
var studentDoc = SpreadsheetApp.openById(templateCopy.getId());

// 获取当前学生的课程和班级
var studentCourse = actualSheet.getRange("L" + fila).getValue();
var studentClass = actualSheet.getRange("M" + fila).getValue();

// 打开教师数据库(建议指定工作表名,避免默认表出错)
var teacherSheet = SpreadsheetApp.openById("IDFORMTHETEACHERSHEET").getSheetByName("你的教师表工作表名");
var lastRow = teacherSheet.getLastRow();
// 一次性获取所有教师数据(从第2行开始,跳过表头:行范围2到lastRow,列范围1到5)
var teacherData = teacherSheet.getRange(2, 1, lastRow - 1, 5).getValues();

var matched = false;

// 遍历每一行教师数据
for (var i = 0; i < teacherData.length; i++) {
  var row = teacherData[i];
  var teacherEmail = row[1]; // B列是第2个元素(数组索引从0开始)
  var teacherCourse = row[3]; // D列是第4个元素
  var teacherClass = row[4]; // E列是第5个元素

  // 匹配同一行的课程和班级
  if (teacherCourse === studentCourse && teacherClass === studentClass) {
    // 给教师添加文档编辑权限
    studentDoc.addEditor(teacherEmail);
    // 发送通知邮件
    MailApp.sendEmail({
      to: teacherEmail,
      subject: "新的学生文档待查看",
      body: `您好,您负责的课程【${studentCourse}】班级【${studentClass}】的学生文档已生成,请查看:${studentDoc.getUrl()}`,
      // 可选:启用下面的htmlBody使用富文本邮件
      // htmlBody: `<p>您好,您负责的课程<strong>${studentCourse}</strong>班级<strong>${studentClass}</strong>的学生文档已生成,请查看:<a href="${studentDoc.getUrl()}">点击打开</a></p>`
    });
    matched = true;
    // 如果一个班级对应多个教师,可删除break;如果只需要匹配第一个教师,保留break
    // break;
  }
}

// 未匹配到教师时弹出提示
if (!matched) {
  SpreadsheetApp.getUi().alert("未找到该学生对应的教师信息");
}

关键说明

  1. 批量获取数据:一次性获取教师表的所有数据,比逐行调用getRange更高效,符合Google Apps Script性能最佳实践。
  2. 遍历匹配逻辑:通过for循环遍历每一行教师数据,确保是同一行的课程和班级同时匹配学生数据。
  3. 邮件与权限:匹配成功后同时添加编辑器权限并发送邮件,直接满足核心需求;可根据实际情况调整邮件内容或是否停止遍历(比如处理多教师场景)。
  4. 索引调整:数组索引从0开始,需对应教师表的列位置,如果你的教师表列布局不同,要相应修改row[1]、row[3]、row[4]的数字。

内容的提问来源于stack exchange,提问作者Asier Párraga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:20:03