You need to enable JavaScript to run this app. 如何在Google Apps Script中通过单封邮件发送批量列表并渲染为表格
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Apps Script中通过单封邮件发送批量列表并渲染为表格

解决方案

核心逻辑优化

你之前的问题根源是单独拆分读取各列数据,遍历单列时无法同步获取同索引的其他列对应值。改为一次性读取目标范围的所有行列数据,利用二维数组行内元素天然对应的特性,即可实现字段对齐。

修正后完整代码片段

var partReceivedQuerySheet = uyg.getSheetByName("Part Received Query");
var partReceivedQuerySheetLastRow = partReceivedQuerySheet.getLastRow();
// 一次性读取A2到D列最后一行的所有数据,每行对应[供应商名称, 产品名称, 数量, 是否入库]
var allProductData = partReceivedQuerySheet.getRange("A2:D" + partReceivedQuerySheetLastRow).getValues();

// 拼接表格头部
var productInfoTable = '<table border="2"><tr><th><b>Brand</b></th>';
productInfoTable += '<th><b>Product Name</b></th>';
productInfoTable += '<th><b>Quantity</b></th>';
productInfoTable += '<th><b>Arrived to Warehouse?</b></th></tr>';

// 遍历所有行数据,每行直接填充对应的四个字段
allProductData.forEach(row => {
  // 跳过空行(可选)
  if(!row[0]) return;
  productInfoTable += '<tr>';
  productInfoTable += `<td>${row[0]}</td>`; // 对应A列供应商
  productInfoTable += `<td>${row[1]}</td>`; // 对应B列产品名
  productInfoTable += `<td>${row[2]}</td>`; // 对应C列数量
  productInfoTable += `<td>${row[3]}</td>`; // 对应D列是否入库
  productInfoTable += '</tr>';
});
productInfoTable += '</table>';

// 发送邮件:必须放在循环外,只会发送1次
MailApp.sendEmail({
  to: "客户邮箱地址",
  subject: "到货产品通知",
  htmlBody: `<p>您好,以下是已抵达办公室的产品清单:</p>${productInfoTable}`
});

注意事项

  • 如果你表格里的到货状态列不是D列,可自行调整getRange的列范围,以及row后的索引值(索引从0开始对应第一列A)
  • 不要将MailApp.sendEmail方法放入遍历循环内,即可避免重复发信的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:24:07