javascript - Data and email list in two different sheet
问题描述
I have the data in the Backend sheet and I have the email list on Subscribers sheet, but the email is not sent to the list, where did I go wrong?
function sendEmail(e) {
var thisSheet = e.source.getActiveSheet();
if (thisSheet.getName() !== 'Backend' || e.range.columnStart !== 17 || e.range.rowStart == 1 || e.value !== 'LOCAL') return;
var body, headers = thisSheet.getRange(1, 1, 1, 6)
.getValues()[0],
thisRow = thisSheet.getRange(e.range.rowStart, 1, 1, 6)
.getValues()[0],
vehicle = thisRow[3],
vehicle2 = thisRow[4],
subject = "⚫ Vehicle Ready "+vehicle +" "+vehicle2
var emailList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subscribers").getRange("A2:A").getValues();
body = "<i>The following vehicle is ready after wash</i><br><br>",
i = 0;
while (i < 6) {
body += '<font style="font-size:14px;color:grey;font-family: Arial">'+headers[i] +'</font>'+' - <b><font style="font-size:14px;font-family: Arial">' + thisRow[i] +'</font></b><br><hr width="30%" align="left" Color="#bfbfbf" size="0.75">';
i++;
}
MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"}); }enter code here
解决方案
这个改装怎么样?
修改点:
- 检索的值
getValues()
是二维数组。在你的情况下,emailList
ofvar emailList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subscribers").getRange("A2:A").getValues()
就像[["email1"],["email2"],,,]
. 此外,在范围“A2:A”的情况下,可能不包含任何值。 - 在
MailApp.sendEmail(recipient, subject, body, options)
,recipient
是一个字符串。
通过以上几点,就会出现这样的错误。当您要将电子邮件发送到 中的所有电子邮件时emailList
,需要使用循环。或者,当您想使用emailList
as中的电子邮件时cc
,不需要使用循环。所以在这里,我想提出以下两种模式。
模式一:
在此模式中,所有电子邮件emailList
都用作recipient
.
修改后的脚本:
当您的脚本被修改时,请进行如下修改。
从:MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
至:
emailList.forEach(([email]) => {
if (email != "") {
MailApp.sendEmail(email, subject, body, {htmlBody: body, name: "company"});
}
})
模式二:
在此模式中,所有电子邮件emailList
都用作cc
.
修改后的脚本:
当您的脚本被修改时,请进行如下修改。
从:MailApp.sendEmail(emailList, subject, body, {htmlBody: body, name: "company"});
至:
MailApp.sendEmail("email address", subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
或者
MailApp.sendEmail(null, subject, body, {htmlBody: body, name: "company", cc: emailList.filter(String).toString()});
- 在这种情况下,当
null
用作时recipient
,电子邮件不包含 的电子邮件地址to
。
笔记:
- 请在启用 V8 的情况下使用此修改后的脚本。
参考:
推荐阅读
- python - Matplotlib:条形图,其中显示所有类的值
- css - 将导入的 css 应用于特定的 div VUEJS
- angular - Angular 和 SVG:如何动态加载 SVG 组件?
- python - Concat Pandas 数据框组合乱序
- python - Matplotlib 用时间戳标记 x 轴,在微秒内删除多余的 0
- python - 你如何计算沿numpy数组轴的平均值?
- qt - Qt Creator QmlScene 中的 SSL 错误
- javascript - 用户输入问题的可变约束
- javascript - 使用 Javascript 创建表
- python - 在 python 中替换它们之前存储分隔符和分隔符位置