【发布时间】:2021-11-10 23:06:25
【问题描述】:
我是 javascript 新手,还在学习。我制作了一个电子表格作为工作数据的跟踪器,有多个用户在处理它。 WorkArea tabWorkArea 是我们标记时间和是否完成的地方。另一个选项卡是错误选项卡ErrorTAB 是一个查询选项卡,如果标记不正确(没有时间输入并且标记完成),则会显示信封号。在错误选项卡中,单元格“S3”上有一个计数公式,它将确定是否存在错误并显示“TRUE”。我的问题是每次用户进行编辑时我的代码都会发送太多电子邮件。如果可能的话,我希望它发送一次电子邮件。你能帮我解决这个问题吗?
这是我使用 onEdit 触发器编写的代码
function sendEmail(e) {
var sp = PropertiesService.getScriptProperties();
var errorTab = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Error');
var cellRef = errorTab.getRange('S3').getValue();
var dataRef = "Kindly Check " + errorTab.getRange('B3').getValue() + errorTab.getRange('H3').getValue() + errorTab.getRange('N3').getValue();
var oldValue = sp.getProperty('S3') || 0;
if(cellRef == false && cellRef == oldValue) return;
else
var option = {
cc: "admin1@gmail.com",
}
{GmailApp.sendEmail("admin@gmail.com",
"Dating Contracts Email Notification for Error Tab",
dataRef,option);
sp.getProperty('S3', cellRef);
}
}
【问题讨论】:
-
我必须为我糟糕的英语水平道歉。不幸的是,我无法理解
My problem is that my code is sending too many emails every time users make an edit. If possible, I want it to send email once.。我可以问一下您当前问题的详细信息和您的目标吗? -
工作表中有 11 个用户。在错误选项卡中,一旦满足条件,S3 将显示 True 将触发代码。我的目标是防止代码发送太多电子邮件,我希望它仅在满足条件后才发送 1 封电子邮件。谢谢
-
感谢您的回复。在您当前的脚本中,当“错误”表的单元格“S3”为
TRUE时,运行GmailApp.sendEmail。在您的目标中,发送电子邮件后,即使“错误”表的单元格“S3”为TRUE,您也不想发送电子邮件。我的理解正确吗? -
是的,你没看错。我希望它只发送 1 封电子邮件。这只是为了通知管理员标记不正确。
-
感谢您的回复。在这种情况下,将
sent放在“T”列并检查它怎么样?这样,在发送电子邮件后,通过在“T”列检查sent不会发送下一封电子邮件。而且,您可以将其视为浏览器的状态。如果这不是您期望的方向,我很抱歉。
标签: javascript google-apps-script google-sheets gmail