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

Google Sheets邮件发送脚本修改需求:适配动态行等4项功能调整

适配需求的Google Sheets邮件发送脚本

以下脚本已完成全部4项功能调整,可直接运行:

// 已发送标记内容,可自定义
var EMAIL_SENT = 'EMAIL_SENT';
// 已发送标记写入列,默认12对应L列,可自行修改数值
var SENT_MARK_COLUMN = 12;

/**
 * 自动扫描未发送行批量发邮件,支持HTML模板
 */
function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  // 数据处理起始行,已改为第3行
  var startRow = 3;
  // 自动计算有效数据行数,无需手动设置
  var numRows = sheet.getLastRow() - startRow + 1;
  // 读取从A列到标记列的所有数据
  var dataRange = sheet.getRange(startRow, 1, numRows, SENT_MARK_COLUMN);
  var data = dataRange.getValues();
  // 读取表头用于模板字段匹配
  var headers = sheet.getRange(1, 1, 1, SENT_MARK_COLUMN).getValues()[0];
  
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    // 读取当前行已发送标记
    var emailSent = row[SENT_MARK_COLUMN - 1];
    // 跳过已发送的行
    if (emailSent === EMAIL_SENT) continue;

    // -------------------------- 可自定义配置区域开始 --------------------------
    // 收件人邮箱,多个用英文逗号分隔
    var emailAddress = "jdoe1@email.net,jdoe2@email.com";
    // 邮件主题
    var subject = 'Student(s) COMPLETED the Orientation.';
    // 邮件HTML模板,用{{表头名}}插入对应列的内容,支持所有HTML语法
    var htmlTemplate = `
    <div>
      <p>您好,以下学生已完成 orientation:</p>
      <ul>
        <li>姓名:{{Names}} {{Last Names}}</li>
      </ul>
    </div>
    `;
    // 纯文本备用内容,不支持HTML的邮箱客户端会显示该内容
    var plainText = `您好,以下学生已完成 orientation:\n姓名:${row[0]} ${row[1]}`;
    // -------------------------- 可自定义配置区域结束 --------------------------

    // 模板变量替换
    var emailHtmlBody = htmlTemplate.replace(/{{(\w+\s*\w*)}}/g, function(match, key) {
      var colIndex = headers.indexOf(key.trim());
      return colIndex >= 0 ? row[colIndex] : match;
    });

    // 发送邮件,同时支持HTML和纯文本
    MailApp.sendEmail({
      to: emailAddress,
      subject: subject,
      body: plainText,
      htmlBody: emailHtmlBody
    });

    // 写入已发送标记
    sheet.getRange(startRow + i, SENT_MARK_COLUMN).setValue(EMAIL_SENT);
    SpreadsheetApp.flush();
  }
}

自定义配置说明

  • 标记列修改:调整常量SENT_MARK_COLUMN的数值即可,列号和Google Sheets列顺序对应,比如1对应A列,12对应L列
  • 邮件内容修改:在配置区域修改htmlTemplate即可,使用{{表头名称}}的格式可自动插入当前行对应列的内容,支持所有HTML标签实现排版、插入图片等需求
  • 收件人/主题修改:直接修改配置区域的emailAddress、subject变量即可,多个收件人用英文逗号分隔
  • 测试注意:代码内的邮箱为测试用虚拟地址,正式使用前请替换为真实收件人邮箱

内容的提问来源于stack exchange,提问作者Ze Za

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:27:02