如何在Google Apps Script的sendEmail脚本中按表格条件添加抄送收件人?
实现方案
完全可行,下面给你两种场景的具体修改方法:
一、从当前行/当前工作表获取第二位抄送邮箱
假设你要从当前行的某一列(比如第19列对应row[19],注意Google Apps Script里数组索引从0开始,列号要对应实际表格列)取第二位邮箱,只需在定义options前判断row[18]的值,拼接抄送字符串即可:
if (Sdate >= SsheetDate && row[1] != "Fire"){ if (row[17] != EMAIL_SENT) { var emailAddress = row[13]; var file1 = DriveApp.getFileById(row[14]); var file2 = DriveApp.getFileById(""); // 处理抄送列表 var ccList = row[16]; // 原有的第一位抄送邮箱 if (row[18] === "Yes") { // 从当前行指定列取第二位邮箱,替换成你实际要取的列索引 var secondCc = row[19]; // 拼接成逗号分隔的字符串,GAS的邮件接口支持这种格式 ccList += ", " + secondCc; } var options = {cc: ccList, replyTo: row[16], // 补全你原本的options其他参数,比如subject、body等 }; // 后续执行发送邮件的代码,比如: // MailApp.sendEmail(emailAddress, 邮件主题, 邮件内容, options); } }
二、从其他工作表获取第二位抄送邮箱
如果要从其他工作表取邮箱,比如你有个名为"邮箱配置"的工作表,示例如下:
if (Sdate >= SsheetDate && row[1] != "Fire"){ if (row[17] != EMAIL_SENT) { var emailAddress = row[13]; var file1 = DriveApp.getFileById(row[14]); var file2 = DriveApp.getFileById(""); // 获取目标工作表 var ss = SpreadsheetApp.getActiveSpreadsheet(); var targetSheet = ss.getSheetByName("邮箱配置"); // 替换成你的工作表名称 // 处理抄送列表 var ccList = row[16]; if (row[18] === "Yes") { // 示例1:直接取目标工作表的A1单元格邮箱 var secondCc = targetSheet.getRange("A1").getValue(); // 示例2:如果需要根据当前行值匹配查找(比如通过关键字找对应邮箱) // var lookupKey = row[某列索引]; // var matchCell = targetSheet.getRange("A:A").createTextFinder(lookupKey).findNext(); // var secondCc = matchCell.offset(0,1).getValue(); // 假设邮箱在关键字右侧一列 // 避免空邮箱导致格式问题 if (secondCc) ccList += ", " + secondCc; } var options = {cc: ccList, replyTo: row[16], // 补全剩余参数 }; // 发送邮件代码 } }
注意事项
- 确认
row[18]的索引是否正确:GAS中表格行数据数组的第一列对应row[0],如果你的判断列是Excel里的S列(第19列),那索引就是row[18],别搞混。 - 确保第二位邮箱的单元格内容是有效的邮箱格式,避免邮件发送失败。
- 如果第二位邮箱可能为空,建议加非空判断,防止抄送列表出现多余逗号。
内容的提问来源于stack exchange,提问作者sss071
相关产品推荐
相关产品推荐

