我有大约10个Google脚本,可以在提交表单时发送电子邮件。直到最近,它的工作情况都很好,但是突然之间,所有人都开始发送两封电子邮件以提交任何表单。我查看了执行日志,第一次执行和第二次执行之间总是有3秒的时间(每个脚本只需要1.5秒即可运行)。
我尝试使用脚本锁(我在这里找到了一个解决方案),但到目前为止,还无法停止重复的电子邮件。我不确定我是否做对了。
SpreadsheetApp.flush();
var lock = LockService.getScriptLock();
try {
lock.waitLock(500);
} catch (e) {
Logger.log('Could not obtain lock after 30 seconds.');
}
function sendEmails() {
---rest of the code---
答案 0 :(得分:1)
我的经验是,不需要的或我称其为虚假提交的内容往往缺少一些答案。因此,我仔细查看了伪造的提交内容,以确定第一次和之后的伪造提交内容之间是否有任何区别,而且我经常发现,伪造的提交内容始终仅包含时间戳记。因此,正如我在this answer中所说的那样,我使用以下代码将虚假提交排除在影响onSubmitForm函数之外:if(e.values && !e.values[1]){return;}
答案 1 :(得分:0)
您的问题是由最近报告的一次关于表单提交触发器运行两次的Google错误引起的:https://b.corp.google.com/issues/144110219