google-apps-script - 通过脚本删除工作表

标签 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 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() 的一些信息 on w3schools并在 this SO question

您的代码应如下所示:

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]);

      }

    }       

  }

}

我将您硬写的工作表名称放在与您在“辅助”工作表上相同的数组中,以避免使用 switch 语句。它还控制您的“辅助”表不存在的情况

关于google-apps-script - 通过脚本删除工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43936740/

相关文章:

google-apps-script - 从谷歌驱动器永久删除文件

google-apps-script - 在 Google Drive、Android 或桌面的文档列表中找不到 Google Apps 脚本项目

google-apps-script - 通过 GAS 向自己发送电子邮件保留在 gmail 发件箱中,而不是在收件箱中

javascript - trim 和清理谷歌脚本

google-apps-script - 使用google脚本和查询功能构建google图表

for-loop - 替换列中的某些单元格值

javascript - 将 jsPDF 与 Google Apps 脚本结合使用

google-sheets - Google 表格中 sumif 的多个条件

javascript - 如何使用Google脚本获取当前单元格下单元格的值?

javascript - Google 脚本 - 将 Gmail 中的数据获取到表格中