Google Sheets脚本实现多单元格邮件发送及抄送功能需求
解决Google Apps Script多邮箱收件及抄送问题
嘿,我来帮你搞定这个邮件发送的问题!你现在的脚本只处理了单个邮箱,所以没法实现多收件人和抄送功能,咱们一步步来调整:
1. 核心思路
要实现需求,我们需要:
- 从D10:D12、M5:M6、AL10:AL12这几个单元格范围读取所有邮箱地址
- 把这些地址分成收件人(to)和抄送(cc)组(你可以根据自己的需求分配,下面示例我假设D10:D12是主收件人,M5:M6+AL10:AL12是抄送)
- 过滤掉空单元格,避免无效的空邮箱
- 调用
MailApp.sendEmail时传入正确的to和cc参数
2. 完整脚本示例
function sendEmail() { // 获取当前活动表格 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 定义需要读取的邮箱范围:可根据需求调整收件/抄送分配 const recipientRanges = ["D10:D12"]; // 主收件人范围 const ccRanges = ["M5:M6", "AL10:AL12"]; // 抄送范围 // 工具函数:读取指定范围的邮箱,过滤空值并去重 function getEmailsFromRanges(ranges) { let emails = []; ranges.forEach(range => { const values = sheet.getRange(range).getValues(); // 把二维数组转一维,过滤空值和重复项 values.flat().forEach(email => { if (email && !emails.includes(email)) { emails.push(email); } }); }); return emails.join(","); // 转成逗号分隔的字符串,符合邮件参数要求 } // 获取整理后的收件人和抄送邮箱 const toEmails = getEmailsFromRanges(recipientRanges); const ccEmails = getEmailsFromRanges(ccRanges); // 邮件内容(可根据需求修改) const subject = "测试多收件人邮件"; const body = "这是一封通过Google Apps Script发送的多收件人+抄送测试邮件"; // 发送邮件 if (toEmails) { // 确保有收件人才发送 MailApp.sendEmail({ to: toEmails, cc: ccEmails, subject: subject, body: body }); SpreadsheetApp.getUi().alert("邮件发送成功!"); } else { SpreadsheetApp.getUi().alert("没有有效的收件人邮箱,请检查单元格内容!"); } }
3. 关键说明
- 范围调整:如果想更改哪些范围属于收件人、哪些属于抄送,直接修改
recipientRanges和ccRanges数组里的范围字符串即可 - 去重与过滤:脚本自动跳过空单元格,并移除重复邮箱,避免重复发送
- 参数格式:
to和cc要求是逗号分隔的邮箱字符串,所以用join(",")把数组转成符合要求的格式 - 扩展功能:如果需要发送HTML格式邮件或添加附件,只需在
sendEmail的配置对象里添加htmlBody或attachments参数即可
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

