【问题标题】:Remove 3 columns from all sheets except Main Menu on Google Sheets从所有工作表中删除 3 列,但 Google 表格上的主菜单除外
【发布时间】:2020-03-23 18:55:07
【问题描述】:

我没有编程背景,但我正在尝试在 Google 表格上编写一个脚本来删除我的工作簿中的前 3 列,但“主菜单”除外。我有 61 个标签,所以我不想单独删除它们。因此,以下是我通过谷歌搜索得出的结论。我一直看到错误“找不到方法 deleteColumns()”。任何帮助将不胜感激。

function QuickDelete() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sss = ss.getSheets();

  for (i = 0; i < sheets.length; i++) {
     switch(sss[i].getSheetName()) {
     case "Main Menu":
         break;
     default:
        ss.deleteColumns(sss[i]);
    }
  }
}

【问题讨论】:

    标签: google-apps-script google-sheets google-apps-script-editor


    【解决方案1】:

    我发现有两个问题需要解决。

    1. 您正在循环访问sheets。但是你应该循环访问sss。
    2. deleteColumns() method 需要应用于工作表,即sss[i]

    类似sss[i].deleteColumns(columnPosition, howMany)。

    function QuickDelete() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sss = ss.getSheets();
      var columnPosition = 1; // Delete from the 1st column
      var howMany = 3; // Delete 3 columns
    
      for (i = 0; i < sss.length; i++) {
        switch(sss[i].getSheetName()) {
          case "Main Menu":
            break;
          default:
            sss[i].deleteColumns(columnPosition, howMany)
        }
      } 
    }
    

    一切顺利。

    【讨论】:

      【解决方案2】:
      • 在您的for 循环中,您正在使用您之前未定义的sheets。您必须在代码中的任何位置将 sss 更改为 sheets 或反之亦然。

      • 你必须给deleteColumns提供两个参数,first column的位置要删除,number of columns要删除。在您的情况下,分别为 1 和 3。

      所以你的代码可能是这样的:

      function QuickDelete() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheets = ss.getSheets();
        for (i = 0; i < sheets.length; i++) {
          if (sheets[i].getSheetName() !== "Main Menu") {
            sheets[i].deleteColumns(1, 3)
          }
        }
      }
      

      此外,如果有很多 values 您必须检查您的 expression,则 switch 语句是有意义的。在您的情况下,我最好使用if 来检查工作表的名称是否为Main Menu。

      • 参考:

      https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleteColumns(Integer,Integer) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else

      【讨论】:

      • 我尝试了您的方法以及 ADW 的方法,两种方法都有效!另外,我想知道 !== 符号是什么意思?
      • @FatinNabilah 检查this。此外,请考虑接受clicking the "check mark" button underneath the vote buttons 提供的为您的问题提供解决方案的答案之一,因为该社区依赖于此与其他用户分享知识。
      猜你喜欢
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多