您需要以下四个函数:
setTrigger()
:此函数负责删除先前的触发器,并为function_Triggered
创建一个新的触发器。您需要做的唯一事情就是在每天7点之前设置一个每日触发器,例如6-7am。以下功能只是辅助功能,您不需要手动执行它们。
scheduledTrigger(hours, minutes)
:此函数接受时间(小时和分钟),负责为function_Triggered
创建计划触发器。
deleteTriggers()
:此函数删除所有当前触发器(在本例中仅有一个)function_Triggered
.
function_Triggered()
:此函数包含您想要每天在7:55am执行的代码。
function setTrigger() {
deleteTriggers();
scheduledTrigger(7,55);
}
function scheduledTrigger(hours,minutes){
var today_D = new Date();
var year = today_D.getFullYear();
var month = today_D.getMonth();
var day = today_D.getDate();
pars = [year,month,day,hours,minutes];
var scheduled_D = new Date(...pars);
var hours_remain=Math.abs(scheduled_D - today_D) / 36e5;
ScriptApp.newTrigger("function_Triggered")
.timeBased()
.after(hours_remain * 60 *60 * 1000)
.create()
}
function deleteTriggers() {
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if ( triggers[i].getHandlerFunction() == "function_Triggered") {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}
function function_Triggered() {
// your function code here
}
setTrigger()
的触发器。触发器附加在电子邮件上,因此我无法看到为什么触发器在你的情况下失败了。在取消接受一开始帮助过你的答案之前,请先进行调查研究。祝你好运 :) @user3546314 - undefinedfunction_Triggered
的触发器,它将在选择的时间设置。另一个是由您手动创建的触发器,用于setTrigger()
,它会在您想要设置其他触发器之前的每天设置。到目前为止还清楚吗?如果您按照我在回答中提到的说明,并且进入您的仪表板,您是否看到这两个触发器?如果是,请打开设置并向我发送两个显示其参数的截图。@user3546314 - undefined1. 我点击播放SetTringger,它会在19:30创建一个新的触发器,但第二个函数仍未运行
回答:第二个函数将在19:30运行,而不是您执行SetTrigger
的时间。我告诉过你要阅读说明书。有两篇关于完全相同的事情的帖子,请仔细阅读并重新完成任务。 - undefined