gpt4 book ai didi

google-apps-script - 如何识别哪个时间驱动触发器调用了函数?

转载 作者:行者123 更新时间:2023-12-04 12:04:23 25 4
gpt4 key购买 nike

我在 Google Sheets 电子表格中有一个 Google App Script 函数,我需要每天使用 time-driven trigger 调用一次.
此函数的运行时间通常比脚本允许的最长时间(目前为 6 分钟)要长,因此我编写了它以通过多次调用来完成它的工作。如果该函数尚未完成,我想创建一个临时时间驱动触发器以在一分钟内再次运行该函数并在调用该函数时删除该临时触发器,但保持每日触发器处于事件状态。伪代码可能更好地解释了它......

function run_job_via_trigger(trigger) {
if(trigger === temporary trigger) {
// If this is a 'temporary' trigger that was created to
// run the job after the first call then delete it.
// This must not delete the daily trigger that makes the
// first call to the function.
// If I check the UID of the trigger here I still
// would need to know which trigger is the daily trigger
// and which is a temporary trigger!
ScriptApp.deleteTrigger(trigger)
}

const job_finished = job_that_takes_several_calls_to_complete();

if(job_finished === false) {
// Create a temporary time-driven trigger to call this
// function again in 1 minute.
ScriptApp.newTrigger('run_job_via_trigger').timeBased().everyMinutes(1).create();
}

}

function job_that_takes_several_calls_to_complete() {
// This function often takes more time to complete than
// the maximum time allowed for scripts to run. It keeps
// track of its execution time and returns true if it has
// finished doing what it needs to do or false if it
// needs more time and should be called again.
return finished ? true : false;
}
如何检测哪个时间驱动触发器调用了 run_job_via_trigger功能以便我可以删除临时触发器而不是每日触发器?
电子表格还有其他几个时间驱动的触发器,所以简单地在最后删除所有触发器并创建一个新的每日触发器并不是,据我所知,是一个可以接受的解决方案。

最佳答案

当您的函数被触发器调用时,它会收到 trigger event作为其参数。例如,您可以检查触发器 UID,如下所示:

function doWhatever(e) {
if(e.triggerUid === 'trigger_id') {
// do something
} else {
// do something else
}
}
更新
有几种方法可以知道哪些触发器正在运行。
最好的情况是,当您创建触发器时,您将其 ID 存储在某处,例如用户属性,然后您始终知道它何时运行。但我猜你没有这样做。
在您的情况下,您可能想做一些手动工作。转到触发器页面,找到您的重复触发器,单击右侧的三个点并选择“执行”。然后您将在过滤器中看到触发器 ID:
enter image description here
现在您可以在代码中使用它来检查它是您的重复触发器还是临时触发器。

关于google-apps-script - 如何识别哪个时间驱动触发器调用了函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69301792/

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