这就是我正在做的事情(我复制并试图从旧消息中调整它):
1)在包含许多工作表的电子表格内创建工作表并将其重命名为“TOC”
2)在“TOC”中,在A1中添加此公式:= SheetNames(GoogleClock())
3)在Google Apps脚本中复制后,运行下面的“SheetNames”功能
function SheetNames() { // this will create a list of all the sheets ;)
try {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
var out = new Array( sheets.length+1 ) ;
out[0] = [ "Name" , "gid" ];
for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] = [sheets[i-1].getName() , sheets[i-1].getSheetId() ];
return out
}
catch( err ) {
return "#ERROR!"
}
}
4)运行功能“delete_only_some_sheets”
function delete_only_some_sheets() {
// CAUTION !! It will delete some sheets !
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName("TOC");
for (var i = 3; i<=5; i++){ // !!! HERE adapt the "5" number to your needs here
var tet = source.getRange(["B"]+[(i)]).getValues();
//ss.setActiveSheet(ss.getSheetId()[tet]); ///ERROR here ! ;(
ss.deleteActiveSheet();
//ss.deleteSheetId()[tet]; //possible ??
}
}
我一直收到错误“找不到方法”setActiveSheet(。“”我被封锁了。;(
非常感谢提前;)
编辑:
您好, 感谢“Srik”,我找到了解决方案! ;) 第1部分至第3部分是相同的。第4部分):
4)运行功能“delete_only_some_sheets”
function delete_only_some_sheets() {
// CAUTION !! IT will delete some sheets !
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName("TOC");
for (var i = 3; i<=5; i++){ // !!! HERE adapt the "5" number to your needs here
var tet = source.getRange(["A"]+[(i)]).getValues();
ss.setActiveSheet(ss.getSheetByName(tet));
ss.deleteActiveSheet();
}
}
答案 0 :(得分:4)
首先,没有getSheetId()
方法。我假设你在这里指的是getSheets()
方法,它返回一个Sheet
个对象的数组。
其次,setActiveSheet()
将Sheet
个对象作为参数。使用getSheets()
方法,您可以按照以下方式执行此操作
ss.setActiveSheet(ss.getSheets()[i]);
无需阅读TOC表,获取ID等。