Google apps script 在新表单提交条目上发送重复电子邮件
我有以下脚本,它根据表单提交中的一个字段向适当的人发送电子邮件。它工作正常,但每次提交新条目时都会发送多封电子邮件,我不知道为什么。有人能告诉我我的代码有什么问题吗Google apps script 在新表单提交条目上发送重复电子邮件,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有以下脚本,它根据表单提交中的一个字段向适当的人发送电子邮件。它工作正常,但每次提交新条目时都会发送多封电子邮件,我不知道为什么。有人能告诉我我的代码有什么问题吗 function sendEmails() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 2; // First row of data to process var numRows = 2; // Number of rows to p
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 3)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
var email1 = "A@A.com";
var email2 = "B@B.com";
for (i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var subject = "Sending emails from a Spreadsheet";
if (message = "cat") {
MailApp.sendEmail(email1, subject, message);
if (message = "dog") {
MailApp.sendEmail(email2, subject, message);
}
}
}
}
这些线路:
if (message = "cat") {
MailApp.sendEmail(email1, subject, message);
if (message = "dog") {
MailApp.sendEmail(email2, subject, message);
}
应该是:
var email;//Create a new variable
if (message == "cat") {
email = email1;
} else if (message == "dog") {
email = email2;
}
MailApp.sendEmail(email, subject, message);
这些线路:
if (message = "cat") {
MailApp.sendEmail(email1, subject, message);
if (message = "dog") {
MailApp.sendEmail(email2, subject, message);
}
应该是:
var email;//Create a new variable
if (message == "cat") {
email = email1;
} else if (message == "dog") {
email = email2;
}
MailApp.sendEmail(email, subject, message);
我非常确定表单提交会在最后一行结束,并且不需要在这些行中进行迭代。这假设您没有在表单提交表中掺杂数组公式之类的内容
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var dataRange = sheet.getRange(row, 1, 1, sheet.getLastColumn());
var data = dataRange.getValues()[0];
var email1 = "A@A.com";
var email2 = "B@B.com";
var emailAddress = data[0]; // First column
var message = data[1]; // Second column
var subject = "Sending emails from a Spreadsheet";
if (message == "cat") {
MailApp.sendEmail(email1, subject, message);
};
if (message == "dog") {
MailApp.sendEmail(email2, subject, message);
};
}
最后一部分可能可以通过Sandy的建议或switch>case进行改进我很确定表单提交最终会出现在最后一行,并且不需要遍历这些行。这假设您没有在表单提交表中掺杂数组公式之类的内容
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var dataRange = sheet.getRange(row, 1, 1, sheet.getLastColumn());
var data = dataRange.getValues()[0];
var email1 = "A@A.com";
var email2 = "B@B.com";
var emailAddress = data[0]; // First column
var message = data[1]; // Second column
var subject = "Sending emails from a Spreadsheet";
if (message == "cat") {
MailApp.sendEmail(email1, subject, message);
};
if (message == "dog") {
MailApp.sendEmail(email2, subject, message);
};
}
最后一部分可能可以通过Sandy的建议或switch>case来改进Use==或===来测试if语句中的等价性. 这两个项目的评估结果都是正确的。@ScampMichael尝试了你的建议,但没有成功,仍然发送了多个。这就好像它不是只检查新行以确定发送电子邮件的位置,而是检查所有行。我不知道如何解决这个问题。email1和email2中有多少?在您编写代码时,您的代码将遍历数据范围中的每一行并相应地发送一封电子邮件。您可能希望在文档中看到表单提交触发器,以查看如何提取最后一个表单dataUse==或===以测试if语句中的等效性. 这两个项目的评估结果都是正确的。@ScampMichael尝试了你的建议,但没有成功,仍然发送了多个。这就好像它不是只检查新行以确定发送电子邮件的位置,而是检查所有行。我不知道如何解决这个问题。多少email1和多少email2?在您编写代码时,您的代码将遍历数据范围中的每一行并相应地发送一封电子邮件。您可能希望看到文档中的表单提交触发器,以查看您如何提取最后一个表单数据非常感谢@sandygood,我现在能够使用它,这要感谢你的帮助!非常感谢您@sandygood,多亏您的帮助,我现在能够让它工作了!非常感谢你的帮助!现在可以了!我真的很感激。非常感谢你的帮助!现在可以了!我真的很感激。