gpt4 book ai didi

javascript - 在 Google Apps 脚本中,如果满足条件,如何仅发送一次电子邮件

转载 作者:行者123 更新时间:2023-12-02 14:42:06 26 4
gpt4 key购买 nike

我正在尝试在某个单元格具有所需值时自动发送电子邮件。我想出了如何持续执行此操作,即将触发器设置为每天在一天中的特定时间触发,以检查条件并在满足条件时发送电子邮件。但我希望触发器在电子邮件发送一次后停止工作。我想我可以这样做:

我有一个功能,可以在满足条件时发送电子邮件。如果不满足条件,则会创建一个触发器,该触发器将再次运行该函数一次。依此类推,触发器将继续创建,直到满足条件为止。

这是我编写的代码:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssName = ss.getName();
var emailAddress = ss.getRange("Tab1!B4").getValue();
var Test1 = ss.getRange("Tab1!B6").getValue();

function SendEmailOnce(){
if (Test1 <= 10) {
MailApp.sendEmail({
to: emailAddress,
subject: "Sample subject: " + ssName,
htmlBody: "Sample message<br/> Regards, robot",
});
}
else {
function createTriggerCheckAgain() {
ScriptApp.newTrigger('SendEmailOnce')
.timeBased()
.after(60 * 1000)
.create();
}
}
}

由于某种原因它不起作用。当我在 Test1 值为 15 时运行该函数,然后将该值更改为 5 时,不会发送电子邮件。

如果它们是分开的,它的各个部分就可以工作:1. 当我运行该函数时,如果值为 5,则发送电子邮件。2. 在我运行创建该触发器的函数(值为 5)后一分钟后发送电子邮件。

也许有更简单的方法来做到这一点?我是 JavaScript 新手。预先感谢您的任何建议。

最佳答案

当触发器在 60 秒后运行时,Test1不再定义,因此您无法检查 undefined 是否是 <= 10 。这样做的原因是因为只有SendEmailOnce中的代码被执行,而不是其外部的代码。 emailAddress 也是如此。变量。

您需要将前四行代码包含在您可以调用的函数中,该函数返回值 Test1emailAddress或将其包含在您的 SendEmailOnce 中功能。

修改后的代码:

function SendEmailOnce(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssName = ss.getName();
var emailAddress = ss.getRange("Tab1!B4").getValue();
var Test1 = ss.getRange("Tab1!B6").getValue();

if (Test1 <= 10) {
MailApp.sendEmail({
to: emailAddress,
subject: "Sample subject: " + ssName,
htmlBody: "Sample message<br/> Regards, robot",
});
}
else {
function createTriggerCheckAgain() {
ScriptApp.newTrigger('SendEmailOnce')
.timeBased()
.after(60 * 1000)
.create();
}
}
}

关于javascript - 在 Google Apps 脚本中,如果满足条件,如何仅发送一次电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com