我正在尝试删除除特别命名的工作表(INPUT、Template、Summary)之外的所有工作表。这对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;
}
}
}
2条答案
按热度按时间ffdz8vbo1#
1.将
ActiveSpreadSheet
赋值给变量后,就可以使用该引用。在代码中,var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
可以替换为var sheets = ss.getSheets();
,因为变量ss
包含对活动电子表格的引用。getSheets
返回一个工作表数组。所以当你写var sheet = ss.getSheets()[0];
时,你实际上是在变量sheet
中赋值数组的第一个元素。因此,在case
语句中,您总是引用同一个工作表。因此,不应使用sheet.getSheetName() === "INPUT"
,而应使用sheets[i].getSheetName() === "INPUT"
1.要删除工作表,也可以使用
deleteSheet
函数。这是最近在Google Scripts中添加的。下面是一个修改后的代码,你可以使用(我还没有测试,但你应该得到的想法)。
w46czmvw2#
在DeleteNewSheets()onchange上执行触发器,它将删除除这两个工作表之外的所有工作表。很简单