Javascript 删除Google脚本中除指定工作表以外的所有工作表

Javascript 删除Google脚本中除指定工作表以外的所有工作表,javascript,google-sheets,Javascript,Google Sheets,我正在尝试删除所有工作表,除了指定的工作表(输入、模板、摘要)。对JS来说非常新,所以我确信它已经过时了: //Delete sheets that are not named 'Input', 'Template', and 'Summary' function deleteRedundantSheets() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var

我正在尝试删除所有工作表,除了指定的工作表(输入、模板、摘要)。对JS来说非常新,所以我确信它已经过时了:

//Delete sheets that are not named 'Input', 'Template', and 'Summary'
function deleteRedundantSheets() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheets()[0];
   var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

for (i = 0; i <= sheets.length; i++) {
  switch(sheets[i]) {
   case sheet.getSheetName() === "INPUT":
     break;
   case sheet.getSheetName() === "Template":
     break;
   case sheet.getSheetName() === "SUMMARY":
    break;
   default:
    ss.setActiveSheet(sheet[i]);
    ss.deleteActiveSheet;
    }
 }
}
//删除未命名为“输入”、“模板”和“摘要”的工作表
函数deleteRedundantSheets(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheets()[0];
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
对于(i=0;i
  • activesheetsheets
    分配给变量后,可以使用该引用。在代码中
    var sheets=SpreadsheetApp.getactivesheets().getSheets();
    可以替换为
    var sheets=ss.getSheets();
    作为变量
    ss
    包含对活动电子表格的引用

  • 返回一个工作表数组。因此,当您编写
    var sheet=ss.getSheets()[0];
    时,实际上是在变量
    sheet
    中分配数组的第一个元素。因此在
    情况下
    语句中,您总是引用同一个工作表。因此,不要使用
    sheet.getSheetName()==“INPUT”
    ,您应该使用
    工作表[i]。getSheetName()=“输入”

  • 要删除工作表,您也可以使用该功能。这是最近在Google脚本中添加的

  • 下面是您可以使用的修改后的代码(我还没有测试过,但您应该明白这一点)

    函数deleteRedundantSheets(){
    var ss=SpreadsheetApp.getActiveSpreadsheet();
    var sheets=ss.getSheets();
    对于(i=0;i
    非常感谢。我在你的代码中遇到了错误,但我必须做的是将第3行更改为:var sheets=ss.getSheets()[0];Naah,不要这样做……这样你只是在引用第一张表……如果你使用
    Browser.msgBox(sheets.length);
    在for循环之前,您会看到值未定义。错误是因为如果以i=0开头,那么如果使用
    
    
    function deleteRedundantSheets() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheets = ss.getSheets();
    
      for (i = 0; i < sheets.length; i++) {
         switch(sheets[i].getSheetName()) {
         case "INPUT":
         case "Template":
         case "SUMMARY":
             break;
         default:
            ss.deleteSheet(sheets[i]);
        }
      }
    }