我有一个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)"
根据名称删除工作表。
用getSheetByName()
得到那么片状物体的这传递给您deleteSheet()
:
ss.deleteSheet(ss.getSheetByName(thisTab));
目前,您正在将字符串传递thisTab
给deleteSheet()
,这将无法正常工作,因为它需要的是工作表对象,而不是字符串。只要上面的代码可以正常工作并且thisTab
与工作表名称完全匹配,您所需要做的就是调用getSheetByName(thisTab)
获取工作表对象,然后将其传递给deleteSheet()
。