gpt4 book ai didi

google-apps-script - 谷歌脚本: How to call a function to run after another function is completed

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

我有一个带有 4 个不同函数的 google 脚本,需要依次运行,但一个函数可以在前一个函数完成/完成后立即运行。

每个函数所需的时间各不相同,但平均每个函数大约需要 15-20 分钟。

每个函数都会完成一个包含大量数据的电子表格,因此我想在触发器内运行第一个函数,等到第一个函数结束,运行第二个函数等,以每隔(例如)4加载信息小时。

谢谢!

最佳答案

一般情况下,要在函数 B 之后运行函数 A,需要编写一个 Controller 例程,首先调用其中一个,然后调用另一个:

function a() { /* stuff */ }
function b() { /* other stuff */ }
function doStuff() {
a();
b();
}

对于您的情况,您需要处理一个执行时间限制,否则会终止您的其中一个函数的执行并阻止其余函数的运行,您需要编写一个使用 Apps 脚本 ScriptApp class 的调度例程。您有多种方法可以做到这一点,从使用设置的间隔触发器安排第一个函数,以及使用每个函数告诉 Google 何时运行下一个函数,而不是运行 下一个函数,或者使用脚本属性来指示下一个要运行的函数,手动运行一个函数并让最后一个函数设置第一个函数的调用。

链接示例:

function a() {
...
// Google will run b() within +/-15 minutes of the indicated time
// Schedule it for 16 minutes from now, so we know a() has
// completed and shut down before b runs.
var next = ScriptApp.newTrigger("b").timeBased();
next.after(16 * 60 * 1000).create();
}
function b(e) {
/* Add code to delete the one-time trigger used to call this function
(The trigger uid is in the event object e) */
...

属性方法:

function doStuff() {
var props = PropertiesService().getScriptProperties();
var next;
switch (props.getProperty("runNext")) {
case "a":
a();
next = "b";
break;
...
}
props.setProperty("runNext", next);
}
function a() {...}
...

如果您实现一个链接函数的解决方案(相对于使用属性来指示要运行哪个函数的解决方案),您将需要确保删除以前的触发器以防止触发器计数无休止地增长。

关于google-apps-script - 谷歌脚本: How to call a function to run after another function is completed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051037/

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