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

如何在Google Apps Script中优化GmailApp发信代码可读性及修复HTML加粗失效问题

问题原因
  • 你代码里写的&lt;b&gt;是HTML转义字符,会被直接渲染为<b>文本,不会被解析为加粗标签
  • 拼接了加粗标签的内容仅传入了GmailApp.sendEmail的第三个纯文本参数,你提前定义的html变量和htmlBody配置完全没有用到,邮件客户端默认按纯文本解析内容,自然不会渲染HTML样式
  • 邮件发送相关的参数定义分散,重复声明了option、options两个配置对象,逻辑混乱
修复方案

1. 调整内容拼接逻辑

把转义的&lt;b&gt;、&lt;/b&gt;替换为原生的<b>、</b>,同时分别准备纯文本版本和HTML版本的邮件内容,兼顾不支持HTML的邮件客户端。

2. 重构邮件发送代码

合并邮件配置参数,统一传入sendEmail方法的第四个高级参数,明确传入htmlBody配置开启HTML渲染。

修正后完整代码
// 提前声明变量避免变量提升问题
let send = 0;
let messageText = ''; // 纯文本版本内容
let messageHtml = ''; // HTML版本内容

// 拼接回答内容
const question = itemResponse.getItem().getTitle();
const answer = itemResponse.getResponse();
// 纯文本内容不需要加粗标签,保留换行
messageText += `${i + 1}. ${question}: ${answer}\n`;
// HTML内容插入<b>标签,换行后续统一替换为<br>
messageHtml += `${i + 1}. <b>${question}</b>: ${answer}\n`;

if(answer === 'English') send = 1;
if(answer === 'Japanese') send = 2;

// 邮件公共配置
const EMAIL_CONFIG = {
  from: 'myemail@gmail.com',
  adminAddress: 'myemail@gmail.com',
  title: '【incoming】Notification'
}

// 拼接完整邮件内容
const plainContent = `確認してください。The form was submitted with the following contents.\n\n${question}\n${messageText}`;
const htmlContent = `確認してください。The form was submitted with the following contents.<br><br>${question}<br>${messageHtml.replace(/\n/g, '<br>')}`;

// 发送逻辑
if(send === 1){
  GmailApp.sendEmail(
    EMAIL_CONFIG.adminAddress,
    EMAIL_CONFIG.title,
    plainContent,
    {
      from: EMAIL_CONFIG.from,
      htmlBody: htmlContent
    }
  );
}
效果说明

修改后htmlBody参数会被Gmail识别为邮件的HTML版本,其中的<b>标签会被正常渲染为加粗效果,同时保留了纯文本版本的内容作为降级方案,兼容性更好。邮件发送的所有配置都集中到了EMAIL_CONFIG对象中,参数按sendEmail方法的入参顺序排列,可读性大幅提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:30:02