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

时间:2012-09-22 08:40:31

标签: google-apps-script google-sheets

我在脚本中有一个函数(称为f1让我们说),这需要太多时间来运行(在电子表格中,它使用setformula转置importrange和query..take大约2分钟来运行)。

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

我安排此功能在夜间运行(带触发器)但每次有人打开它时,该功能再次重新运行(处理相同的数据)。 我尝试使用void onload()函数,但即使我没有调用它,f1也会运行。

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

感谢您的帮助

卢瓦克

1 个答案:

答案 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)