TypeError:无法在对象中找到函数getDataRange

时间:2018-03-30 18:12:49

标签: google-apps-script google-sheets

我正在尝试创建一个脚本来搜索整个工作簿" A"和工作簿" B"对于重复值,然后从工作簿中的位置删除包含副本的行" A"。

然而,当运行脚本时,我得到错误" TypeError:找不到对象中的函数getDataRange"回到我身边,我无法弄明白为什么。

我正在处理的脚本如下:

   function deleteRowInSpreadsheet1() { 
var s1 =SpreadsheetApp.openById("1pxWr3jOYZbcwlFR7igpSWa9BKCa2tTeliE8FwFCRTcQ").getSheets();
var s2 = SpreadsheetApp.openById("18jLxZlge_UFkdTjlO6opuDk1VKeezhEPLe9B7n1OfQs").getSheets(); 
var values1 = s1.getDataRange().getValues();
var values2 = s2.getDataRange().getValues();
var resultArray = [];
for(var n in values2){
var keep = true
for(var p in values1){
  if( values1[n][0] == values1[p][0] && values2[n][1] == values1[p][1]){
    keep=false ; break ;
  }
}
if(keep){ resultArray.push(values2[n])};
}
s1.clear()
s1.getRange(1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}

2 个答案:

答案 0 :(得分:2)

您正在调用getSheets(),它会返回一个工作表数组。因此,您需要遍历每个工作表,然后调用getDataRange()

举个例子:

var s1 =SpreadsheetApp.openById("1pxWr3jOYZbcwlFR7igpSWa9BKCa2tTeliE8FwFCRTcQ").getSheets();
for (var i=0; i<s1.length; i++) {
  var values = s1[i].getDataRange().getValues();
}

然后,当然,在您需要的地方使用这些值。

答案 1 :(得分:1)

在行

var s1 =SpreadsheetApp.openById("RTcQ").getSheets();
var s2 = SpreadsheetApp.openById("7fQs").getSheets();

您使用.getSheets()方法返回包含该电子表格中所有工作表的对象。您无法获取此对象的数据范围。

相反,您应该使用.getActiveSheet().getSheetByName()

var s1 =SpreadsheetApp.openById("RTcQ").getSheetByName('Sheet1');
var s2 = SpreadsheetApp.openById("7fQs").getSheetByName('Sheet2');