基于Google AppScript的批量邮件模板代码补全与日志开发需求
批量邮件模板补充开发方案(Google Apps Script)
一、添加发件人名称、Reply-To及BCC配置
修改邮件发送函数,通过MailApp.sendEmail的高级选项参数实现字段配置:
function sendEmails() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const dataSheet = ss.getSheetByName("邮件数据"); // 替换为你的数据标签页实际名称 const logSheet = ss.getSheetByName("Sent Email Log"); const data = dataSheet.getDataRange().getValues(); // 跳过表头,从第二行开始遍历数据 for (let i = 1; i < data.length; i++) { const [recipient, subject, body, senderName, replyTo, bccList] = data[i]; // 邮件配置选项 const emailOptions = { name: senderName, // 发件人显示名称 replyTo: replyTo, // 回复邮箱地址 bcc: bccList // 密送收件人(多邮箱用逗号分隔) }; // 发送邮件 MailApp.sendEmail(recipient, subject, body, emailOptions); // 记录发送日志 logEmailSend(logSheet, new Date(), recipient, subject); } }
二、实现发送日志记录
新增日志函数,自动将发送信息写入「Sent Email Log」标签页:
function logEmailSend(logSheet, sendTime, recipient, subject) { // 初始化表头(若不存在) const header = logSheet.getRange(1, 1, 1, 3).getValues()[0]; if (!header.includes("发送时间")) { logSheet.getRange(1, 1, 1, 3).setValues([["发送时间", "收件人邮箱", "邮件主题"]]); logSheet.getRange(1, 1, 1, 3).setFontWeight("bold"); } // 获取下一个空行并写入数据 const nextRow = logSheet.getLastRow() + 1; logSheet.getRange(nextRow, 1, 1, 3).setValues([[sendTime, recipient, subject]]); // 格式化时间列 logSheet.getRange(nextRow, 1).setNumberFormat("yyyy-MM-dd HH:mm:ss"); }
注意事项
- 确保数据标签页包含对应列:收件人邮箱、邮件主题、邮件内容、发件人名称、Reply-To邮箱、BCC收件人(可根据实际列顺序调整数组解构的顺序)
- 首次运行脚本时需完成Google权限授权,允许脚本访问表格和发送邮件
内容的提问来源于stack exchange,提问作者Shamie
相关产品推荐
相关产品推荐

