2014-07-13 20 views
0

我有一張表,其中一些行具有始終在一起的配對值(在第一個和第五個列中)(例如,識別人值)和不重複的值(與某些值相關的值事件)。我正在考慮在用戶鍵入行中第一個值時自動插入第二個值的最有效方法。 (該表包含數千行,我想知道它是否有效)。 但是當我運行我的代碼:如何解決執行失敗:TypeError:無法從undefined讀取屬性「0」?

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; 
     } 

}

我得到一個消息錯誤,指出該行Logger.log("input = " + input[j][0])Execution failed: TypeError: Can not read property "0" from undefined.。 。(同樣的情況在該行if (input[j][0] == givenValue) {但命令Logger.log("input = " + input);顯示了預期的結果如何修復

+0

'getValues()'返回一個值的二維數組,如果你使用:input [0] [0]或input [1],你會得到什麼? 0]'? –

+0

嗨,@SandyGood,在這兩種情況下,我都會得到同樣的錯誤信息,謝謝 – craftApprentice

+0

好吧,我會檢查變量中的值'columnPredicte d'和'lastRow'。 'Logger.log('columnPredicted:'+ columnPredicted);您需要從頂部開始,並檢查每行代碼的實際返回情況。看起來,出於某種原因,「輸入」沒有被分配您所期望的。 –

回答

1
for(var j=input.length; j>0; j--){ 

陣列將[0..(length-1)],所以不存在元素[length]試試這個:?

for(var j=input.length-1; j>0; j--){ 
         ^^ 
+0

非常感謝@Mogsdad! – craftApprentice

相關問題