我是google script
的新手,我想比较来自两张纸和两张纸的两行。如果任何单元格数据值与之匹配,则会增加一个值。但是我收到了这样的错误,
TypeError:无法读取属性" 0"来自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 :(得分:0)
这可能是因为这两个范围有不同的长度,或者因为你在第一个数组中附加了1个,在这种情况下也没有任何下标。
在某些时候,您正在尝试访问不在其他范围内的行的第一列(索引0)或不存在的第一列1。
因为你在迭代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++;
}
}
}