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

Google Apps Script HTML变量换行无法渲染的问题求助

解决Google Apps Script HTML模板中变量HTML代码不渲染的问题

问题原因

核心问题是Google Apps Script的HTML模板默认转义机制:<?= ?>语法会自动将变量中的HTML标签转义为实体字符(比如<br>变成&lt;br&gt;),导致HTML代码无法被渲染,只能以纯文本形式显示。另外你的代码还存在一个隐性错误:没有将模板对象赋值给emailHTML变量,这会导致后续设置属性失败。

解决方案

  1. 使用非转义输出语法:将模板中输出message变量的<?= ?>替换为<?!= ?>,该语法会直接输出原始HTML内容,不进行转义。
  2. 修正模板变量赋值:确保将HtmlService.createTemplateFromFile的返回值赋值给emailHTML变量。
  3. 直接使用原生HTML标签:传入message变量时,不需要将<br>转义为&lt;br&gt;,直接使用真实的HTML标签即可。

修正后的代码

code.gs

function sendEmail() {
  var fileNo = '12345';
  // 关键:将创建的模板对象赋值给emailHTML
  var emailHTML = HtmlService.createTemplateFromFile('emailTemplate');
  emailHTML.header = "New File Opened";
  emailHTML.message =
      'A new file has been opened. <br> File Information: <br>' +
      'File Number: ' + fileNo + '<br>';
  // 收件人邮箱需用字符串包裹
  MailApp.sendEmail('me@me.com', 'New File', "No HTML Client", {htmlBody: emailHTML.evaluate().getContent()});
};

emailTemplate.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <div style="text-align:center; font-family:Cambria;">
      <h2> <?= header ?> </h2>
    </div>
    <div style="background:#ececec; font-size:130%; color:black; margin-right:auto; margin-left:auto; padding:10px;">
      <!-- 使用<?!= ?>避免HTML转义 -->
      <?!= message ?> <br> <br>
    </div>
  </body> 
</html>

关键说明

  • <?!= ?>:专门用于输出包含HTML代码的变量,跳过自动转义流程,让邮件客户端能正确解析HTML标签。
  • 变量赋值:如果没有将模板对象赋值给emailHTML,后续的emailHTML.header和emailHTML.message设置会抛出未定义错误,这是原代码的隐性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:50:28