谷歌脚本,由于未定义的数组使用setValues的问题

时间:2018-01-11 03:33:27

标签: google-apps-script google-sheets

我有一个脚本来检查从一个电子表格到另一个电子表格的新数据,并且我已经创建了一个在编译时给我一个错误的数组。错误是 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); 

1 个答案:

答案 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下的日志。