基于AppScript的用户友好型HTML邮件输入方法问询
可行实现方案
方案核心思路
直接复用现有Google Sheets体系,新增独立的邮件模板工作表,零额外工具成本,团队无需掌握任何代码知识即可修改内容。
具体操作步骤
- 第一步:在现有Google Sheets工作簿中新增一个名为「邮件模板」的工作表,预设填写规则:
- A1单元格标注「邮件主题」,B1单元格留给团队填写实际主题,支持占位符,比如
售后通知:{{客户姓名}}您的订单已发出 - A2单元格标注「邮件正文」,B2单元格可以拉宽拉高方便输入,留给团队填写正文内容,需要插入变量的位置统一用
{{变量名}}格式标注,比如开头写您好{{客户姓名}}:,变量名和客户信息表的列名保持一致即可 - 可以在模板表下方添加填写示例,提前列好所有可用的占位符,避免团队填写错误
- A1单元格标注「邮件主题」,B1单元格留给团队填写实际主题,支持占位符,比如
- 第二步:调整现有Apps Script代码,增加模板读取和变量替换逻辑:
- 脚本运行时优先读取「邮件模板」工作表的主题和正文内容
- 遍历客户信息行的所有字段,把正文中对应的
{{字段名}}占位符批量替换为当前客户的实际值 - 替换完成后再调用Gmail发送接口即可
- 第三步(可选优化):如果需要支持简单排版(加粗、换行、列表),可以告知团队用最基础的Markdown规则填写模板,在脚本中增加一段轻量Markdown转HTML的工具函数,替换完变量后把正文内容转成HTML格式再发送,全程不需要团队懂HTML代码。
核心代码示例
// 读取邮件模板 function getEmailTemplate() { const templateSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('邮件模板'); return { subject: templateSheet.getRange('B1').getValue(), content: templateSheet.getRange('B2').getValue() } } // 替换模板变量 function renderTemplate(template, data) { let rendered = template; for (const [key, value] of Object.entries(data)) { rendered = rendered.replaceAll(`{{${key}}}`, value); } return rendered; } // 发送邮件调用示例 function sendEmailToCustomer(customerData) { const template = getEmailTemplate(); const subject = renderTemplate(template.subject, customerData); const htmlBody = renderTemplate(template.content, customerData); // 此处可按需插入Markdown转HTML逻辑 GmailApp.sendEmail(customerData.客户邮箱, subject, '', { htmlBody: htmlBody }); }
方案优势
- 零额外工具接入,完全复用现有Google Sheets生态,不需要开通其他服务
- 团队学习成本几乎为0,只需要按照示例填写模板、用固定格式标注变量位置即可,不需要懂HTML或Apps Script
- 后续新增变量只要在客户信息表加列、模板里加对应占位符即可,不需要修改代码逻辑
内容的提问来源于stack exchange,提问作者rafaeljmoreira
相关产品推荐
相关产品推荐

