谷歌应用程序脚本+缓存或运行脚本一天一次



我在一个脚本中有一个函数(比方说叫f1),它运行时间太长(在电子表格中,它使用setformula转置importrange和query…运行大约需要2分钟)。

F1用于组合两个电子表格,并使用setformula()在第二个电子表格的某些列中设置结果。

我计划这个函数在晚上运行(带触发器),但每次有人打开它,函数都会再次运行(处理相同的数据)。我试着把一个void()函数放在上面,但f1也在运行,即使我没有调用它。

有没有一种方法可以每天运行一次函数,而不是在人们打开电子表格时运行
有没有办法将结果缓存一整天。。直到功能重新运行到时间表
或者有没有办法将整个电子表格的值(而不是单元格中包含的公式)复制到另一个电子表格中(我在文档中没有找到)
或者,还有其他解决方法吗?

感谢的帮助

Loïc

如果函数被调用为公式,则每次有人打开电子表格时,以及在其他情况下,都会重新计算它。

正如您所建议的,您可以缓存数据并立即返回缓存的数据。这些线上的东西。

var ONE_DAY = 24 * 60 * 60 * 1000;
function f1(parameters, force){
var returnVal = CacheService.getPrivateCache().get('somevariablename'); 
if (force == true || returnVal == null) {
/* Do your long drawn calculation here */
CacheService.getPrivateCache.put('somevariablename, value, ONE_DAY);
}
else {
return returnVal;
}
}

并将电子表格中的函数调用为

=f1(parameters, false)

最新更新