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

求助:基于筛选后Google Sheet数据生成HTML表格邮件的代码问题

Google Apps Script 邮件表格问题修复

问题原因

  1. 循环发送大量邮件:MailApp.sendEmail被放在遍历数据行的循环内部,每处理一行就发送一封邮件,导致发送了与数据行数相同的邮件。
  2. 筛选功能失效:
    • 定义的create_filter函数从未被调用,表格筛选根本没执行。
    • 即使执行了表格筛选,getValues()依然会获取所有行数据(包括被筛选隐藏的行),不会自动过滤。
    • 文本筛选条件写法错误,whenTextContains不支持用||连接多个值的写法。

修复后的代码

function sendFilteredTableEmail() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("Sheet1");
  const dataRange = sheet.getRange("A2:AH");
  const data = dataRange.getValues();

  // 定义筛选条件:列24(数组索引23)数值>2;列10(数组索引9)文本为指定状态之一
  const validStatuses = ["Report Pending", "Site Visit Pending", "Query Raised", "Hold"];
  const filteredData = data.filter(row => {
    const col24Value = row[23]; // 数组索引从0开始,表格第24列对应索引23
    const col10Value = row[9];  // 表格第10列对应索引9
    return typeof col24Value === 'number' && col24Value > 2 && validStatuses.includes(col10Value);
  });

  // 构建HTML表格头部
  let table = `<html><body><br><table border=1><tr>
    <th>Compliance Score</th>
    <th>STSOR Value</th>
    <th>STSOR %</th>
    <th>ZZ lines</th>
    <th>ZZ%</th>
    <th>PI lines Counted</th>
    <th>PI %</th>
    <th>NRDS Value</th>
    <th>NRDS %</th>
  </tr></br>`;

  // 构建表格主体(仅添加筛选后的数据行)
  filteredData.forEach(row => {
    table += "<tr>";
    // 仅取表头对应的9列数据,避免表格结构错乱
    row.slice(0,9).forEach(cell => {
      table += `<td>${cell || ""}</td>`; // 空单元格显示为空字符串
    });
    table += "</tr>";
  });

  // 闭合HTML标签
  table += "</table></body></html>";

  // 发送邮件(仅发送一次)
  MailApp.sendEmail({
    to: "rama.mannava465@gmail.com", 
    subject: "筛选后的合规数据表格",
    htmlBody: table
  });
}

关键修复点

  • 将邮件发送逻辑移到循环外部,确保只发送一次包含完整筛选后表格的邮件。
  • 使用数组filter方法直接在代码中过滤数据,无需依赖表格的可视化筛选,保证获取的是符合条件的行。
  • 修正列索引(数组从0开始,表格列号-1对应数组索引)。
  • 表头仅定义了9列,构建表格时只取每行的前9个单元格,避免表格结构错乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:45:35