【问题标题】:Deleting sheets through script通过脚本删除工作表
【发布时间】:2017-10-11 17:09:42
【问题描述】:

我有这段代码:

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”也没有那些。是的,工作表与数组同名。

有什么见解吗?提前致谢!

【问题讨论】:

  • 也许你在 switch 语句上犯了一个错误:case name == transp[c] 应该是 case name == transp[c][0] ?
  • 不,那也没用 :(
  • 据我了解,您尝试删除一些工作表,一些是“辅助”工作表中的列表,其他是硬写在您的代码上的,对吗?
  • 是的,就是这样
  • Transp[c] 将是工作表的名称,我使用相同的数组在另一个函数中创建它们

标签: google-apps-script google-sheets


【解决方案1】:

我认为问题出在您的字符串比较方法上。您应该使用 le localeCompare() 方法而不是逻辑比较方法。

关于 localeCompare() on w3schoolsthis 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 语句。它还可以控制您的“辅助”表不存在的情况

【讨论】:

  • 工作就像一个魅力,再次感谢 Pierre-Marie Richard,向你学习总是很好哈哈哈!
猜你喜欢
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 2023-01-27
  • 2015-02-14
  • 2021-05-17
  • 1970-01-01
相关资源
最近更新 更多