我在脚本中有一个函数(称为f1让我们说),这需要太多时间来运行(在电子表格中,它使用setformula转置importrange和query..take大约2分钟来运行)。
F1用于合并2个电子表格,并使用setformula()
将结果设置在第二个电子表格的某些列中。
我安排此功能在夜间运行(带触发器)但每次有人打开它时,该功能再次重新运行(处理相同的数据)。 我尝试使用void onload()函数,但即使我没有调用它,f1也会运行。
有没有办法每天运行一次功能,而不是人们打开电子表格?
有没有办法将结果缓存一整天..直到该功能重新运行计划?
或者有没有办法将整个电子表格的值(不是单元格中包含的公式)复制到另一个(我在文档中没有找到)?
或者,还有其他解决方法吗?
感谢您的帮助
卢瓦克
答案 0 :(得分:1)
如果您的函数作为公式调用,则每次有人打开电子表格时都会重新计算它,在其他情况下也会重新计算。
您可以按照建议缓存数据并立即返回缓存数据。这些线上的东西。
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)