温馨提示:本文翻译自stackoverflow.com,查看原文请点击:google apps script - how to get deleteSheet to work for complex sheet names

google apps script - 如何使deleteSheet用于复杂的工作表名称

发布于 2020-03-27 10:37:52

我有一个Google插件,可以管理Google电子表格中的几张纸。它要做的一件事是根据日期删除工作表,该日期是它删除的工作表的名称。在当前的开发阶段,我还添加了删除包含日期和另一个术语("script 6/5/2019"例如)的工作表的功能。

我使用的代码适用于以日期命名的工作表,并对其进行了一些调整,但在删除工作表时返回错误: "Cannot find method deleteSheet(string)"

 if(sRemove==true) {
  SpreadsheetApp.getActiveSpreadsheet().toast('Finding Old Scripts', 'Status',3);
    for (var i = ss.getNumSheets()-1; i >= 0; i--) {
    
        var thisTab = ss.getSheets()[i].getName();
        if(thisTab.substr(0,6) =="script") {
        Logger.log(i+" "+thisTab+" is a script");
        var tabDate = new Date(thisTab.substr(8)); 
        //8 is the first digit of the date
        Logger.log(tabDate);
        var thisDate = new Date(todayDate);
  
        var patt = new RegExp("s");
        var res = patt.test(thisTab);
        Logger.log(i+" "+res);

        if(tabDate<thisDate && res==true) { 
           var ss = SpreadsheetApp.getActiveSpreadsheet();
           //ss.setActiveSheet(ss.getSheetByName(thisTab));
           //ss.deleteActiveSheet(ss.getSheetByName(thisTab));   
           Logger.log(thisTab);
           ss.deleteSheet(thisTab);
           tabsGone++;
        }
     }
  }
  ui.alert(tabsGone+" Sheets Removed");
  }

Logger.log 返回要删除的工作表的正确名称,但是删除工作表则返回错误 "Cannot find method deleteSheet(string)"

查看更多

查看更多

提问者
Rob Campbell
被浏览
72
ross 2019-07-03 22:16

需求:

根据名称删除工作表。


解:

getSheetByName()得到那么片状物体的这传递给您deleteSheet()

ss.deleteSheet(ss.getSheetByName(thisTab));

说明:

目前,您正在将字符串传递thisTabdeleteSheet(),这将无法正常工作,因为它需要的是工作表对象,而不是字符串。只要上面的代码可以正常工作并且thisTab工作表名称完全匹配,您所需要做的就是调用getSheetByName(thisTab)获取工作表对象,然后将其传递给deleteSheet()


参考文献:

  1. getSheetByName(string)
  2. deleteSheet(sheet)