【发布时间】:2019-10-25 07:02:57
【问题描述】:
我对此很陌生,我的工作有一个 Google 表格,其中包含我们来自 FB 的所有潜在客户信息,我正在尝试拥有一个功能 (onEdit),它将根据以下内容向潜在客户发送电子邮件一个单元格的数据。例如,当 A2 包含“Follow Up”时,它会向 D2 中的地址发送一封电子邮件,正文来自 J2(“Follow Up”数据验证的预设响应)。现在这适用于第 2 行,但是当在任何其他行中输入“跟进”时,它会向列表中的每一行发送一封电子邮件。例如,当触发 A29 中的事件时,它将 J 列中的正文文本发送到列表中的每封电子邮件。我试图让活动一次只发送一封电子邮件(基于活动单元会议验证要求)。
我已尽我所能查看此处的其他帖子,使用 for 循环将这段代码拼凑在一起,同时检查新行(新行不断添加到工作表中)。三个 if 语句可能很草率,但我不知道如何将其清理为一个单数 if 语句。我正在考虑添加一个列,说明电子邮件是否已经发送,并更新 for 循环或 if 语句以不向这些行发送电子邮件。
var sheetname = "Prometheus";
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
var ac = sheet.getActiveCell();
var endRow = sheet.getLastRow();
var startRow = 1;
for (var i = endRow; i >= startRow; i--) {
var rangeToCheck = sheet.getRange(i, 1, 1, 21);
if (ac.getValue() == "Appt. Set (appointment is setup)") {
data = rangeToCheck.getValues();
Logger.log(data)
MailApp.sendEmail({
to: data[0][4],
subject: "Appt. Confirmation",
body: data[0][10]
}); break;
} else if (ac.getValue() == "Lead") {
data = rangeToCheck.getValues();
Logger.log(data)
MailApp.sendEmail({
to: data[0][4],
subject: "Welcome",
body: data[0][11]
}); break;
} else if (ac.getValue() == "Follow Up") {
data = rangeToCheck.getValues();
Logger.log(data)
MailApp.sendEmail({
to: data[0][4],
subject: "Follow Up",
body: data[0][12]
});
}
}
}
我希望当我的活动单元格满足 if 语句中的条件时,只会向同一行中的联系信息发送一封电子邮件。现在它会在连续满足条件时向工作表中的每个人发送电子邮件。
【问题讨论】:
标签: javascript for-loop google-apps-script google-sheets while-loop