0

我在一个脚本中有一个函数(比方说叫做 f1),它需要太多时间来运行(在电子表格中,它使用 setformula transpose importrange 和 query.. 大约需要 2 分钟才能运行)。

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

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

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

感谢帮助

洛伊克

4

1 回答 1

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)
于 2012-09-22T12:37:28.410 回答