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

Why does my Apps Script reference the wrong row?

目标

我正在尝试使用一些自定义函数创建点差sheet。 sheet 的目的是在竞猜比赛中保持分数。第一行是问题编号,第二行是得分,第三行是该问题的犯规次数。

问题

在注意到分数计算存在一些问题后,我能够将问题缩小到我将当前问题之前发生的犯规相加的代码部分。看来无论我做什么,代码都会对问题行求和,而不是犯规行。

尝试过的解决方案

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

例子

我不确定这是否有意义,但我已经举了一个例子 sheet here 所以你可以明白我在说什么,并试着弄清楚什么是继续。请记住,我很清楚我可以使用一个简单的内置公式来完成我在示例 sheet 中尝试做的事情,但是由于无法使用 worksheet 公式在 Apps 脚本方面,我必须创建自己的版本。我已经让拥有 link 的任何人都可以编辑该示例,因此您应该可以完全访问它;但如果你有问题,请告诉我,我会看看我能做些什么来解决它。

在您的 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;