2015-10-15 45 views
0

我是google script的新手,我想比較兩張紙上的兩行&如果任何單元格數據值匹配,它會增加一個值。但我發現了這樣的錯誤,在google腳本中匹配兩行

TypeError: Cannot read property "0" from undefined.

這裏是我的代碼,

function onFormSubmit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Form Responses 1"); 
var ans_sheet = ss.getSheetByName('Correct_Answers'); 
var getValues = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues(); 
var realValues = ans_sheet.getRange(2, 1, ans_sheet.getLastRow(), ans_sheet.getLastColumn()).getValues(); 
for (var i in getValues) { 
    for (var j in getValues[i]) { 
     var matched = 0; 
     if (getValues[i][j] == realValues[i][j]) { 
      matched++; 
     } else { 
      getValues.push(1); 
     } 
    } 
} 

我知道我在這裏做得不對,但因爲我是新我想不出它出。專家非常需要這種幫助。謝謝。

回答

0

這可能是因爲兩個範圍有不同的長度,或者因爲您將1附加到第一個數組,這種情況下也沒有任何下標。

在某些時候,您嘗試訪問不在另一個範圍或不存在的第一列的第一列(索引0)。

由於您正在迭代getValues,因此您可以在循環的開始處進行檢查。

for (var i in getValues) { 
    if(i == realValues.length){break;} 
    for (var j in getValues[i]) { 
     if(j == realValues[j].length){break;} 
     var matched = 0; 
     if (getValues[i][j] == realValues[i][j]) { 
      matched++; 
     } 
    } 
}