为什么我的Apps脚本引用了错误的行?

时间:2015-01-31 14:38:32

标签: google-apps-script

目标

我正在尝试使用一些自定义函数创建电子表格。这张表的目的是在一个测验比赛中保持得分。第一行有问题编号,第二行是得分,第三行是该问题的犯规数。

问题

在注意到分数计算的一些问题之后,我能够将问题缩小到代码的一部分,在那里我加起来在当前问题之前发生的犯规。似乎无论我做什么,代码总结了问题行,而不是犯规行。

尝试解决方案

非常奇怪的是,无论我将参考单元格更改为什么,它总是会产生相同的结果(即它仍然引用与其一直相同的问题行)。

实施例

我不确定这是否有意义,但我已经制作了一个示例表here,这样你就可以看到我在说什么,并试图弄清楚发生了什么。请记住,我很清楚我可以使用简单的内置公式完成我在示例表中要做的事情,但由于无法在Apps脚本端使用工作表公式,所以我必须创建我自己的版本。我已经让这个例子可以为任何有链接的人编辑,所以你应该可以完全访问它;但是如果你有问题,请告诉我,我会看到我能做些什么来解决它。

1 个答案:

答案 0 :(得分:1)

在For循环中,您要对索引求和而不是值:

尝试:

  for (var PrevValue in PrevValues[0]) {
    Sum = Sum + Number(PrevValues[0][PrevValue]);
  }

编辑: 您还需要考虑传入单个单元格而不是范围(= mySum($ B4:B4))的情况,因为在这种情况下,值将直接传递而不是数组。

  if(PrevValues instanceof Array){
    for (var PrevValue in PrevValues[0]) {
      Sum = Sum + Number(PrevValues[0][PrevValue]);
    }
  }else
    Sum = PrevValues;