Google apps script 通过脚本删除工作表
我有这样的代码:Google apps script 通过脚本删除工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有这样的代码: function deleteSheets(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheets = ss.getSheets(); var transp = ss.getSheetByName("aux").getRange("A2:A").getValues(); var i =0; var c = 0; var name; for(i in sheets){ for(c in
function deleteSheets(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var transp = ss.getSheetByName("aux").getRange("A2:A").getValues();
var i =0;
var c = 0;
var name;
for(i in sheets){
for(c in transp){
var nome_transp = transp[c][0];
switch(name = sheets[i].getName()){
case name == transp[c]:
ss.deleteSheet(sheets[i]);
break;
case name == "aux":
ss.deleteSheet(sheets[i]);
break;
case name == "nulos":
ss.deleteSheet(sheets[i]);
break;
case name == "Sem Transportadora":
ss.deleteSheet(sheets[i]);
break;
}
}
}
}
我可以通过解包看到“sheets”和“transp”中的计数器和值是正确的,但它们从不删除各自的表,“aux”、“nulos”和“Sem transportadora”表也不删除。是的,这些表和数组同名
有什么见解吗?提前谢谢 我认为问题出在字符串比较方法上。您应该使用le localeCompare()方法,而不是逻辑比较方法 有关localeCompare()和上的一些信息 您的代码应该如下所示:
function deleteSheets(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var transp = new Array();
var auxSheet = ss.getSheetByName("aux")
if(auxSheet != null){
if(auxSheet.getLastRow() > 1){
transp = auxSheet.getRange(2, 1, ss.getSheetByName("aux").getLastRow()-1).getValues();
}
}
var i =0;
var c = 0;
transp.push(["aux"]);
transp.push(["nulos"]);
transp.push(["Sem Transportadora"]);
for(i in sheets){
var sheetName = sheets[i].getName();
for(c in transp){
var name = transp[c][0].toString();
if(name.localeCompare(sheetName) == 0){
ss.deleteSheet(sheets[i]);
}
}
}
}
我将您硬写的工作表名称放在与“aux”工作表相同的数组中,以避免switch语句。它还可以控制您的“辅助”工作表不存在的情况也许您在切换语句中犯了错误:case name==transp[c]应该是case name==transp[c][0]?不,这也不起作用:(据我所知,您试图删除一些工作表,一些是“辅助”中的列表)sheet,其他的都是硬写在你的代码上的,对吗?是的,Transp[c]将是sheet的名字,我用同一个数组在另一个函数中创建它们,效果很好,再次感谢Pierre-Marie Richard,向你学习总是很好的哈哈哈!