我有一张表,其中一些行具有总值在一起的对值(在第一列和第五列中)(例如,识别人值)和不重复的值(与之相关的值)某种事件)。我正在考虑在用户键入行中的第一个值时自动插入第二个值的最有效方法。 (该表包含数千行,我想知道它是否有效)。 但是当我运行我的代码时:
var columnPredicted = getColumnNrByName(activeSheet, 'MY_COLUMN')+1;
var activeCell = activeSheet.getActiveCell();
var activeRow = activeCell.getRow();
var givenValueCell = activeSheet.getRange(activeRow, 1);
var givenValue = activeCell.getValue();
var predictedCell = activeSheet.getRange(activeRow, columnPredicted);
var lastRow = activeSheet.getLastRow()-1;
var input = activeSheet.getRange(2, 1, lastRow, columnPredicted).getValues();
Logger.log("input = " + input);
for(var j=input.length; j>0; j--){
Logger.log("input = " + input[j][0]);
if (input[j][0] == givenValue) {
predictedCell.setValue(input[i][0]);
break;
}
}
我收到一条消息错误,指出Execution failed: TypeError: Can not read property "0" from undefined.
行Logger.log("input = " + input[j][0])
。 (同样发生在if (input[j][0] == givenValue) {
行中。但命令Logger.log("input = " + input);
显示了预期的结果。如何解决?
答案 0 :(得分:1)
for(var j=input.length; j>0; j--){
数组将为[0..(length-1)]
,因此没有元素[length]
。试试这个:
for(var j=input.length-1; j>0; j--){
^^