You need to enable JavaScript to run this app. Google Sheets使用Apps Script向对应代理发送带抄送的定制报告问题
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets使用Apps Script向对应代理发送带抄送的定制报告问题

修正方案

核心问题根因

你对数据只取1行的判断是正确的,getRange(行起始位置, 列起始位置, 总行数, 总列数) 中第三个参数你设置为1,仅读取第1行数据,同时原代码存在三个额外问题:

  • 未将每行的产品参数传递给HTML模板,导致所有邮件内容一致
  • row[mail]写法错误,mail为未定义变量,需要替换为邮箱所在列的数字索引(列索引从0开始计数,A列对应0、B列对应1,以此类推)
  • cc字段写死为固定值,无法匹配不同代理的抄送需求

前置准备

先确认你的Request工作表列结构,参考示例列顺序如下(可根据你实际的表格调整对应索引):

列号列内容对应索引
A代理主收件邮箱0
B该代理专属抄送邮箱1
C代理负责产品名称2
D产品详情内容3

注:第一行为表头,实际数据从第二行开始

修正后完整代码

function myFunction() {
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Request");
  // 读取所有有效数据:从第2行第1列开始,行数为总行数-1(跳过表头),列数为总列数
  var data = ws.getRange(2, 1, ws.getLastRow()-1, ws.getLastColumn()).getValues();

  data.forEach(function(row){
    // 每次循环读取新的模板实例,避免参数覆盖
    var emailTemp = HtmlService.createTemplateFromFile("responsing");
    // 给模板传递当前行的产品参数
    emailTemp.productName = row[2];
    emailTemp.productDetail = row[3];
    // 渲染模板得到专属HTML内容
    var htmlMessage = emailTemp.evaluate().getContent();
    // 发送邮件,取当前行的主收件邮箱和抄送邮箱
    GmailApp.sendEmail(
      row[0],
      "Report",
      "Your browser doesn't support HTML",
      {name:"VUC-GISOCC", htmlBody:htmlMessage, cc: row[1] || "" }
    );
  });
}

HTML模板调整说明

你需要在responsing.html文件中对应位置插入占位符,即可调用代码中传递的参数,示例模板内容参考:

<!DOCTYPE html>
<html>
  <body>
    <p>您好:</p>
    <p>这是您负责的产品*<?= productName ?>*的专属报告:</p>
    <div><?= productDetail ?></div>
    <p>如有疑问请联系运营团队。</p>
  </body>
</html>

注意事项

  • 如果你的表格列顺序和示例不一致,只需调整代码中row[n]的n为对应列的索引即可
  • 首次运行脚本需要根据提示完成Sheet读取、Gmail发送的权限授权
  • 正式批量发送前建议先将row[0]替换为自己的测试邮箱,验证内容、收件人、抄送规则是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 21:36:13