【问题标题】:How can I run my hide/show columns script on multiple ranges of columns in one google sheets spreadsheet?如何在一个谷歌表格电子表格中的多个列范围上运行我的隐藏/显示列脚本?
【发布时间】:2017-11-30 22:47:48
【问题描述】:

我没有用 javascript 编写程序,但我设法在网上找到了下面的脚本,它允许我隐藏一系列列。问题是我需要能够对一张纸中的多个列范围重复此操作。所以我可以使用一个按钮隐藏/显示列 C-AG,并使用另一个按钮单独隐藏/显示列 AI - BJ(并执行此操作数月)。这适用于具有大量数据的约会,因此我可以轻松隐藏和显示每个月的约会。

请看下面的图片,这展示了功能。 (第一张图片显示一月份,第二张显示隐藏的一月份。)

Spreadsheet before running hide script-

Spreadsheet after running hide script

另请参阅此脚本放在我的工具栏中的自定义菜单的图像。此菜单中有两个按钮,第一个是 Show C-AG,第二个是 Hide C-AG。

Custom menu created by script

这是允许我隐藏/显示一系列列 (C-AG) 并且运行良好但仅限于一组列(一个月)的脚本:

 function onOpen() {
    var menu = [{name: "Show C-AG", functionName: "showColumns"}, {name: "Hide C-
    AG", functionName: "hideColumns"}]
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Custom", menu);
}

  function showColumns() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    sheet.showColumns(3,31);   // C-AG, 31 columns starting from 3rd 
}

  function hideColumns() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    sheet.hideColumns(3,31);  // C-AG, 31 columns starting from 3rd 
}

提前感谢您对此提供的任何帮助,如果我的问题过于模糊,我们深表歉意,如有必要,请随时告诉我添加更多信息/描述。

【问题讨论】:

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


    【解决方案1】:

    这应该会为你做一段时间。您所要做的就是输入您想要隐藏和显示的所有列号。并且在脚本编辑器中运行 onOpen 函数是很有帮助的,这样你就可以授权它。

    中间函数 showMyCols 和 hideMyCols 只需要编写一个函数来进行显示和隐藏,它们让您不必担心如何设置参数。

    function onOpen(){
      SpreadsheetApp.getUi().createMenu('MyTools')
          .addItem('Show', 'showMyCols')
          .addItem('Hide', 'hideMyCols')
          .addToUi();
    }
    
    function showMyCols(){
      showhideCols('3,4,5,6,7,8,9,10',true);
    }
    
    function hideMyCols(){
      showhideCols('3,4,5,6,7,8,9,10',false);
    }
    
    function showhideCols(colscsv,show){
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getActiveSheet();
      if(!colscsv){
        var resp=SpreadsheetApp.getUi().prompt('Enter Column Numbers separated by commas.', SpreadsheetApp.getUi().Button.OK);
        var cA=resp.getResponseText().split(',');
      }else{
        var cA=colscsv.split(',');
      }
      for(var i=0;i<cA.length;i++){
        if(show){
          sh.showColumns(cA[i]);
        }else{
          sh.hideColumns(cA[i]);
        }
      }
    }
    

    【讨论】:

    • 如果列是连续的,最好使用showColumns(columnIndex,numColums)而不是循环隐藏每一列(一次SpreadsheetApp调用而不是多次调用)
    【解决方案2】:

    如果您不想为每个月创建一个自定义菜单选项并且有一个功能来显示和另一个隐藏每个月的列,您必须使用参数并想办法设置和获取这些参数并发送将它们添加到您的功能中。

    一种方法是使用电子表格中的单元格来设置月份。另一种方法是使用对话框/侧边栏来做到这一点。如果您将使用纯文本输入字段或使用下拉菜单、单选按钮等,将选择您。

    【讨论】:

      【解决方案3】:

      感谢您的帮助,我非常感谢,我最终捏造了 Cooper 发布的代码。我知道这很混乱,但它非常适合我需要的东西。再次感谢!

      function onOpen(){
        SpreadsheetApp.getUi().createMenu('MyTools')
            .addItem('HideJanuary', 'hideCols1')
            .addItem('HideFebruary', 'hideCols2')
            .addItem('HideMarch', 'hideCols3')
            .addToUi();
      }
      
      function hideCols1(){
      
      showhideCols('3,4,5,6,7,8,9,10,11,12,13,14,15
      ,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33',false);
      }
      
      function hideCols2(){
      
      showhideCols('35,36,37,38,39,40,41,42,43,44,45,
      46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62',false);
      }
      
      function hideCols3(){
      
      showhideCols('64,65,66,67,68,69,70,71,72,73,74,75,
      76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94',false);
      }
      
      function showhideCols(colscsv,show){
        var ss=SpreadsheetApp.getActive();
        var sh=ss.getActiveSheet();
        if(!colscsv){
          var resp=SpreadsheetApp.getUi().prompt('Enter Column Numbers separated by 
      commas.', SpreadsheetApp.getUi().Button.OK);
          var cA=resp.getResponseText().split(',');
        }else{
          var cA=colscsv.split(',');
        }
        for(var i=0;i<cA.length;i++){
          if(show){
            sh.showColumns(cA[i]);
          }else{
            sh.hideColumns(cA[i]);
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2016-07-22
        • 1970-01-01
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多