【问题标题】:Troubleshooting JS formula for summing a single cell across multiple Google Sheets对跨多个 Google 表格求和单个单元格的 JS 公式进行故障排除
【发布时间】:2021-07-19 15:55:24
【问题描述】:

我正在尝试对多个 Google 表格中的单个单元格求和。我已经使用这个脚本几个星期了,它最近停止了工作。表格要么无法识别公式的名称,要么识别时在加载过程中超时:

function sumCells(cell) {
var val = [];
SpreadsheetApp.getActive().getSheets().forEach(function (s) {
          val.push(Number(s.getRange(cell).getValue()))
    });
return val.reduce(function (accumulator, value) {
    return accumulator + value;
    });
}

我知道单个单元格没有问题,因为我尝试从每张表中提取数字并将它们汇总到同一张表中,并且没有错误。

是否有人对如何修复代码或除此脚本之外的其他解决方案提出建议?我们使用的工作表数量不断变化,因此不能使用SUM(Sheet1!B5+Sheet2!B5...SheetN!B5)

【问题讨论】:

  • 你能检查你的日志吗?

标签: javascript google-apps-script google-sheets cumulative-sum


【解决方案1】:

您能否检查一下您的脚本的执行日志,以便我们了解确切的错误是什么?

编辑:

  • 您的问题似乎源于执行时间的限制。每个脚本的执行时间不应超过 6 分钟,否则会缩短执行时间并失败。
  • Apps 脚本处理大数据应该没有问题,但拖慢脚本速度的是 API 调用。
  • 我从add-on 中找到了一个公式,如果这是一个选项,它可能会解决您的问题:
    • UTIL_UTIL_VALUESHEETS(A1notation)
    • Usage

参考:

【讨论】:

  • 谢谢!我尝试直接对单元格求和而不是使用数组,但它仍然给了我一个错误。我还在较少的表格上测试了脚本并且它有效,所以我认为问题在于正在梳理的数据量。执行日志说“参数不能为空”,但我认为这是因为我在脚本环境中运行该函数,而不是在我将在特定单元格上调用该函数的实际电子表格上,对吧?抱歉,这是我第一次将 JS 与 Google Sheet 一起使用!
  • 失败时你有多少张纸?当您有很多工作表名称时,您可以为每个函数记录每个工作表名称吗?您可能需要调试以确定导致问题的原因。在我看到确切的数据之前,我不确定。 @csecrepublic
  • 我查看了错误的日志——每次运行的实际执行日志都显示“超过了最大执行时间”。现在我们有 66 张纸,我知道当我们有大约 10 张纸时它正在工作。我 90% 确定这是数据量的问题。
  • 是的,我们对执行时间有限制,每次执行 6 分钟。如果您的脚本超出此范围,那将是错误消息。
  • 嗨@csecrepublic,我找到了一个可能对您有所帮助的插件,请参阅上面的更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 2015-11-17
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多