我正在尝试创建一个脚本来搜索整个工作簿" 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);
}
答案 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');