匹配谷歌脚本中的两行

时间:2015-10-15 07:26:17

标签: javascript google-apps-script

我是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);
        }
    }
}

我知道我在这里做错了什么但是因为我是新手,我无法弄明白。专家非常需要这个帮助。感谢。

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