gpt4 book ai didi

loops - 脚本运行时执行时间限制

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

我的 Google Apps 脚本正在迭代用户的 Google 云端硬盘文件,并将文件复制(有时将其移动到其他文件夹)。该脚本总是在几分钟后停止,并且日志中没有错误消息。

<小时/>

编者注:时间限制随着时间的推移而变化,并且“消费者”(免费)和“工作空间”(付费)帐户之间的时间限制可能有所不同,但截至 2022 年 12 月,大多数答案仍然有效。

<小时/>

我在一次运行中对数十个甚至有时数千个文件进行排序。

是否有任何设置或解决方法?

最佳答案

您可以做的一件事(这当然取决于您想要完成的任务)是:

  1. 将必要的信息(例如循环计数器)存储在电子表格或其他永久存储(例如 ScriptProperties)中。
  2. 让脚本每五分钟左右终止一次。
  3. 设置一个时间驱动的触发器,每五分钟运行一次脚本(或使用 Script service 以编程方式创建触发器)。
  4. 每次运行时,从您使用过的永久存储中读取保存的数据,并从中断处继续运行脚本。

这不是一个一刀切的解决方案,如果您发布代码,人们将能够更好地帮助您。

以下是我每天使用的脚本的简化代码摘录:

function runMe() {
var startTime= (new Date()).getTime();

//do some work here

var scriptProperties = PropertiesService.getScriptProperties();
var startRow= scriptProperties.getProperty('start_row');
for(var ii = startRow; ii <= size; ii++) {
var currTime = (new Date()).getTime();
if(currTime - startTime >= MAX_RUNNING_TIME) {
scriptProperties.setProperty("start_row", ii);
ScriptApp.newTrigger("runMe")
.timeBased()
.at(new Date(currTime+REASONABLE_TIME_TO_WAIT))
.create();
break;
} else {
doSomeWork();
}
}

//do some more work here

}

注意#1:变量 REASONABLE_TIME_TO_WAIT 应足够大,以便新触发器能够触发。 (我将其设置为 5 分钟,但我认为它可以比这个更短)。

NOTE#2:doSomeWork() 必须是一个执行速度相对较快的函数(我想说不到 1 分钟)。

注意#3:Google 已弃用 Script Properties ,并介绍Properties Service取而代之的是。功能已作相应修改。

注意#4:第二次调用该函数时,它将 for 循环的第 i 个值作为字符串。所以你必须将其转换为整数

关于loops - 脚本运行时执行时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450819/

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