数据中的列数与范围中的列数不匹配



我知道这个问题已经发布了很多次,但我仍然在努力使它工作。我有下面的代码:

function conditionalFormat (subGradeRange, colourRange, colourRangeVals) {

subGradeRange.setBorder(true, true, true, true, true, true);
subDash.setColumnWidths(11, 11, 40)
subDash.setColumnWidth(10, 70);
subDash.setColumnWidths(22, 4, 80);
subGradeRange.setHorizontalAlignment("center");
var colours = [];
for (var i = 1; i < colourRangeVals.length; i++) {
colours[i] = [];
for (var j = 0; j < colourRangeVals[i].length; j++) {
var avgTarget = subDash.getRange("O1").getValue();
var gradeCell = subDash.getRange(3, j + 12).getValue();
var avgTargetCell = subSheetPP.getRange(i + 1, 17).getValue();
var mockGradeCell = subDash.getRange(i + 3, j + 12);
var mockGradeCellVal = mockGradeCell.getValue();

if (avgTarget == 0 && gradeCell > avgTargetCell && mockGradeCellVal >= 0) {
colours[i][j] = "#dabeec";
} else if (avgTarget == -1 && gradeCell > avgTargetCell -1 && mockGradeCellVal >= 0) {
colours[i][j] = "#dabeec";
} else if (avgTarget == -2 && gradeCell > avgTargetCell - 2 && mockGradeCellVal >= 0) {
colours[i][j] = "#dabeec";
} else if (avgTarget == 0 && gradeCell == avgTargetCell && mockGradeCellVal >= 0) {
colours [i][j] = "#b8dac1";
}  else if (avgTarget == -1 && gradeCell == avgTargetCell -1 && mockGradeCellVal >= 0) {
colours [i][j] = "#b8dac1";
}  else if (avgTarget == -2 && gradeCell == avgTargetCell - 2 && mockGradeCellVal >= 0) {
colours [i][j] = "#b8dac1";
} else if (avgTarget == 0 && gradeCell < avgTargetCell && mockGradeCellVal >= 0) {
colours [i][j] = "#e7b3b3";
} else if (avgTarget == -1 && gradeCell < avgTargetCell - 1 && mockGradeCellVal >= 0) {
colours [i][j] = "#e7b3b3";
} else if (avgTarget == -2 && gradeCell < avgTargetCell - 2 && mockGradeCellVal >= 0) {
colours [i][j] = "#e7b3b3";
} else {
colours [i][j] = 'white';
}
}
}
Logger.log("done");
colourRange.setBackgrounds(colours);
}

当调试我的colorrangevals有一个数组31与10列。我的颜色数组有一个31的数组,有10列,但我仍然得到上面的错误。

有什么想法?

感谢

这个问题可能是由于第一个for循环从1而不是0开始迭代引起的。

要查看电子表格中的结果,从而使调试更容易,请尝试将最后一行代码替换为:

colourRange.offset(0, 0, colours.length, colours[0].length).setBackgrounds(colours);

最新更新