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

如何提取Google Sheet单元格条件格式颜色并写入HTML邮件正文

解决方案

问题点排查

原有代码存在2个核心问题导致G列条件格式背景色无法同步到邮件:

  • 获取背景色后做了错误的降维处理,仅保留了每行第一个单元格的背景色,直接丢失了G列的条件格式颜色值
  • HTML模板中给整行统一设置背景色,没有针对单个单元格设置对应背景色

修正后代码

Google Apps Script 代码(.gs文件)

function last_row(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet 1");
  var data = ss.getRange(1,1,100).getValues();
  var lrow = 0;
  for (i in data){
    var row = data[i];
    if(row[0] != ""){
      lrow++;
    }
  }
  return lrow; // 补全原代码遗漏的返回值
}

function email_to_mgmt(){
  var ss = SpreadsheetApp.getActive().getSheetByName('sheet 1');
  var lastrow = last_row();
  var headers = ss.getRange("A1:H1").getValues()[0];
  
  var tableRange = ss.getRange(2,1,lastrow-1,8);
  var tableRangeValues = tableRange.getDisplayValues();
  var colors = tableRange.getBackgrounds(); // 保留二维数组结构,不做降维,保留所有单元格背景色

  var htmlTemplate = HtmlService.createTemplateFromFile("email");
  htmlTemplate.headers = headers;
  htmlTemplate.tableRangeValues = tableRangeValues;
  htmlTemplate.colors = colors;

  var htmlForEmail = htmlTemplate.evaluate().getContent();
  var week = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Match").getRange(1,6).getValue();

  MailApp.sendEmail({
    to: "xxx@gmail.com",
    subject: "自定义邮件标题" + week,
    htmlBody: htmlForEmail
  });
}

HTML 模板代码(email.html文件)

<!DOCTYPE html>
<html>
<head>
  <base target="_top">
</head>
<body>
  <div>
    <h1 style="color:#3368FF">Headerxxx</h1>
    <div style="font-size:14px">The following....</div>
  </div>
  <table style="border-collapse:collapse;" border="2" cellpadding="6">
    <thead>
      <tr style="background-color:#00ffff;font-weight:bold;white-space:nowrap;text-align:center;">
        <? headers.forEach(header=>{ ?>
          <th><?= header ?></th>
        <? }) ?>
      </tr>
    </thead>
    <tbody>
     <? tableRangeValues.forEach((row,rowIndex)=>{ ?>
      <tr>
        <? row.forEach((cell,colIndex)=>{ ?>
          <!-- 逐单元格设置对应背景色,完整同步条件格式效果 -->
          <td style="background-color: <?= colors[rowIndex][colIndex] ?>"><?= cell ?></td>
        <? }) ?>
      </tr>  
      <? }) ?>
    </tbody>
  </table>
</body>
</html>

改动说明

  • 补全了last_row函数的返回值,避免获取行数为空报错
  • 取消了背景色数组的错误降维处理,保留每行每个单元格的独立背景色
  • HTML模板中改为逐单元格设置对应背景色,G列的条件格式高亮可以完整同步到邮件表格
  • 优化了表头遍历逻辑,不需要单独定义每个表头变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:57:02