如何只删除一些床单?

时间:2012-10-29 15:55:17

标签: google-apps-script google-sheets

这就是我正在做的事情(我复制并试图从旧消息中调整它):

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();

}

}

1 个答案:

答案 0 :(得分:4)

首先,没有getSheetId()方法。我假设你在这里指的是getSheets()方法,它返回一个Sheet个对象的数组。

其次,setActiveSheet()Sheet个对象作为参数。使用getSheets()方法,您可以按照以下方式执行此操作

ss.setActiveSheet(ss.getSheets()[i]);

无需阅读TOC表,获取ID等。