我有一个脚本来检查从一个电子表格到另一个电子表格的新数据,并且我已经创建了一个在编译时给我一个错误的数组。错误是 TypeError:无法读取属性" length"来自undefined。 (第29行,文件"代码") 第29行是最后一行," .setValues(arr);" 我查看了几个使用setValues的示例,但无法看到我的错误。
提前致谢。
var arr = [];
var rangeval = range.getValues()
.forEach(function (r, i, v) {
if (r[1] == 'Amber') arr.push([v[i][0], v[i][3], v[i][2]]);
});
var destinationSheet = SpreadsheetApp.openById('1UXPyPmOcsLzyBXAzKax8oVVvUSRC8bfgLP2S7j2F9Yw')
.getSheetByName('Sheet1');
destinationSheet.getRange(destinationSheet.getLastRow() + 1, 1, arr.length, arr[0].length)
.setValues(arr);
答案 0 :(得分:0)
该错误表示arr [0]在执行时未定义。
由于getValues()返回一个二维数组,因此我认为if (r[1] == 'Amber')
总是会计算为False。
您可能需要(r[i][1] == 'Amber')
通常以这种方式使用setvalues时,我先做检查:
if(arr.length > 0)
destinationSheet.getRange(destinationSheet.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr);
要进一步排除故障,您可以使用内置调试器逐步执行,或使用Logger.log()调用并检查View菜单下的via logs下的日志。