Rob*_*ell 0 google-sheets google-apps-script
我有一个 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");
}
Run Code Online (Sandbox Code Playgroud)
Logger.log
返回要删除的工作表的正确名称,但删除工作表会返回错误"Cannot find method deleteSheet(string)"
根据名称删除工作表。
用于getSheetByName()
获取工作表对象,然后将其传递给您的deleteSheet()
:
ss.deleteSheet(ss.getSheetByName(thisTab));
Run Code Online (Sandbox Code Playgroud)
目前您正在将字符串传递thisTab
给deleteSheet()
,这将不起作用,因为它需要一个工作表对象,而不是字符串。只要上面的代码工作正常并且与thisTab
您的工作表名称完全匹配,您所需要做的就是调用getSheetByName(thisTab)
以获取工作表对象,然后将其传递给deleteSheet()
.
归档时间: |
|
查看次数: |
566 次 |
最近记录: |