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

如何在Google Sheets Apps Script邮件中添加HTML超链接与换行

解决方案

问题分析

你的代码当前仅发送纯文本邮件,未利用htmlBody参数实现HTML格式的超链接与换行,同时数据范围的获取存在语法错误('B2:E75' + sh.getLastRow()会生成无效的范围字符串)。

修改后的代码

function sendEmail() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet');
  // 正确获取B2到E列最后一行的数据范围
  const lastRow = sh.getLastRow();
  const data = sh.getRange(2, 2, lastRow - 1, 4).getValues();
  
  const htmlMessages = data.reduce((ar, r) => {
    const overdueValue = r[2];
    if (overdueValue > 19) {
      const url = r[0];
      const da = r[1];
      const pa = r[2];
      const bl = r[3];
      // 按预期构造HTML格式内容,模板字符串更易读
      const htmlMessage = `<a href="${url}${bl}">${bl}</a> ${da} ${pa} ${bl} <a href="${url}${da}">${da}</a><br>`;
      ar.push(htmlMessage);
    }
    return ar;
  }, []);

  const subject = "Subject";
  const recipient = 'some@gmail.com';
  // 构造纯文本备用内容(兼容不支持HTML的邮件客户端)
  const plainText = htmlMessages.map(html => {
    return html.replace(/<[^>]+>/g, '')
  }).join('\n');

  // 发送HTML格式邮件,同时提供纯文本 fallback
  MailApp.sendEmail({
    to: recipient,
    subject: subject,
    body: plainText,
    htmlBody: htmlMessages.join('')
  });
}

关键修改说明

  • 数据范围修正:用getRange(2, 2, lastRow - 1, 4)替代原错误写法,参数分别对应起始行、起始列、数据行数、数据列数,确保准确获取目标数据。
  • HTML内容构造:使用ES6模板字符串生成包含超链接(<a>标签)和换行(<br>)的HTML片段,语法简洁不易出错。
  • HTML邮件发送:通过配置对象调用MailApp.sendEmail(),同时指定body(纯文本备用)和htmlBody(HTML内容),兼顾不同邮件客户端的兼容性。
  • 纯文本转换:将HTML内容剥离标签转为纯文本,避免不支持HTML的客户端显示乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:35:28