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

谷歌表格批量发送HTML邮件异常:仅显示主题与HtmlTemplate无正文

解决谷歌脚本批量发送动态HTML邮件仅显示“HtmlTemplate”的问题

问题核心

你的代码直接将HtmlTemplate对象传给了MailApp.sendEmail的第三个参数(纯文本正文位),导致对象被自动转为字符串"HtmlTemplate",而非渲染后的HTML内容。同时,循环内反复调用getRange会显著降低脚本执行效率。

修复方案

  1. 渲染HTML模板:调用evaluate().getContent()将模板转为最终的HTML字符串
  2. 正确配置邮件参数:通过sendEmail的配置选项传入htmlBody,而非直接用第三个参数
  3. 批量获取表格数据:一次性读取整表数据,减少API调用次数

修改后的完整代码

function sendEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName('Sheet1');
  // 批量获取所有数据,避免循环内反复调用getRange
  var data = sheet1.getDataRange().getValues();
  var cc = "mohabyasser@gmail.com";
  var subject = "Testmail";

  // 从第2行开始遍历(跳过表头)
  for (var i = 1; i < data.length; i++) {
    var row = data[i];
    var emailAddress = row[2]; // 第3列(索引从0开始)
    
    // 创建并填充模板
    var template = HtmlService.createTemplateFromFile("email");
    template.الاسم = row[1];
    template.رقمالتليفون = row[3];
    template.رقمالبطاقة = row[4];
    template.المحكمة = row[5];
    template.وجهةالسفرمنمحافظةيرجىكتابةمحافظةالاقامةفقط = row[6];
    template.وجهةالسفرالىمحافظةيرجىكتابةمحافظةالعملفقط = row[7];
    template.تاريخرحلةالسفرالأوليالأسبوعالأول = row[8];
    template.ساعةرحلةالسفر1 = row[9];
    template.تاريخرحلةالعودةالأوليالأسبوعالأول = row[10];
    template.ساعةالرحلةالمطلوبةللعودة1 = row[11];
    template.تاريخرحلةالسفرالثانيةالأسبوعالثاني = row[12];
    template.ساعةالرحلةالمطلوبةللسفر2 = row[13];
    template.تاريخرحلةالعودةالثانيةالأسبوعالثاني = row[14];
    template.ساعةالرحلةالمطلوبةللعودة2 = row[15];
    template.تاريخرحلةالسفرالثالثةالأسبوعالثالث = row[16];
    template.ساعةالرحلةالمطلوبةللسفر3 = row[17];
    template.تاريخرحلةالعودةالثالثةالأسبوعالثالث = row[18];
    template.ساعةالرحلةالمطلوبةللعودة3 = row[19];
    template.تاريخرحلةالسفرالرابعةالأسبوعالرابع = row[20];
    template.ساعةالرحلةالمطلوبةللسفر4 = row[21];
    template.تاريخرحلةالعودةالرابعةالأسبوعالرابع = row[22];
    template.ساعةالرحلةالمطلوبةللعودة4 = row[23];
    template.تاريخرحلةالسفرالخامسةالأسبوعالخامس = row[24];
    template.ساعةالرحلةالمطلوبةللسفر5 = row[25];
    template.تاريخرحلةالعودةالخامسةالأسبوعالخامس = row[26];
    template.ساعةالرحلةالمطلوبةللعودة5 = row[27];
    
    // 渲染模板为HTML字符串
    var htmlBody = template.evaluate().getContent();
    
    // 发送邮件:第三个参数设为纯文本 fallback(或空字符串),通过选项传入HTML内容
    MailApp.sendEmail({
      to: emailAddress,
      cc: cc,
      subject: subject,
      htmlBody: htmlBody,
      // 可选:添加纯文本版本,适配不支持HTML的邮箱
      body: "请使用支持HTML的邮箱查看此邮件内容"
    });
  }
}

关键修改说明

  • template.evaluate().getContent():将填充后的模板编译为可直接使用的HTML字符串
  • MailApp.sendEmail改用配置对象参数:明确指定htmlBody字段,避免混淆纯文本与HTML正文
  • 批量获取data:一次性读取整个表格的所有数据,循环内直接通过数组索引取值,大幅提升脚本执行速度(谷歌脚本API调用有配额限制,减少调用次数也能避免触发限制)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:20:21