如何用Google Script给Google Sheets批量发送含超链接自动邮件
Google Apps Script 批量读取Sheet发送带超链接邮件方案
原有代码问题定位
- 第一段代码(可批量发纯文本邮件):调用
MailApp.sendEmail时使用纯文本传参模式,未传入htmlBody配置项,邮件客户端无法渲染HTML标签与超链接 - 第二段代码(可发HTML带超链接邮件):仅通过
getRange(lr, 1)读取最后一行的单个邮箱地址,未遍历所有有效数据行,仅能给单个地址发信
整合后可直接运行的代码
function sendBatchHtmlEmails() { // 绑定当前表格,无需手动激活工作表 const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const emailSheet = spreadSheet.getSheetByName("Emails"); const templateSheet = spreadSheet.getSheetByName("Template"); // 一次性读取所有有效行数据,避免逐行调用接口的性能损耗 const lastRow = emailSheet.getLastRow(); // 读取A-D列从第2行开始的所有数据:A列邮箱、B列姓名、C列标题、D列表单ID const emailDataList = emailSheet.getRange(2, 1, lastRow - 1, 4).getValues(); // 读取HTML邮件模板,模板内可直接编写<a>标签插入超链接 const htmlTemplate = templateSheet.getRange(1, 1).getValue(); // 遍历所有收件人信息发信 emailDataList.forEach(rowData => { const [currentEmail, currentName, currentTitle, sheetId] = rowData; // 跳过空邮箱行,避免发信报错 if (!currentEmail) return; // 替换模板占位符 let htmlBody = htmlTemplate .replace("{name}", currentName) .replace("{title}", currentTitle) .replace("{sheet}", sheetId); const emailSubject = `Reminder: ${currentTitle}`; // 发送支持超链接的HTML格式邮件 MailApp.sendEmail({ to: currentEmail, subject: emailSubject, htmlBody: htmlBody, noReply: true }); }); }
使用说明
- 「Template」工作表A1单元格的邮件模板支持直接编写HTML内容,超链接使用
<a href="目标链接地址">链接显示文本</a>格式编写即可,原有{name}/{title}/{sheet}占位符规则保持不变 - 若不需要单独维护模板文件,也可以直接把写好的HTML内容赋值给代码里的
htmlBody字段,写法和第二段代码的HTML拼接逻辑一致 - 首次运行脚本时会弹出权限申请窗口,按提示授权脚本访问表格、发送邮件的权限即可正常运行
- 若需要兼容不支持HTML格式的老旧邮件客户端,可在
sendEmail参数中新增plainTextBody字段传入纯文本版本的邮件内容
内容的提问来源于stack exchange,提问作者user15218917
相关产品推荐
相关产品推荐

