Google表格脚本隐藏列

时间:2017-08-06 21:20:36

标签: google-apps-script google-sheets

我是脚本新手,正在寻求帮助。我已经看到了关于这个主题的一些其他主题,但他们有点过头了。

我需要一个基于单元格内容(BB5)隐藏某些列的脚本。

实施例: 如果BB5 = 3隐藏列J-K,AJ-AM,AV和BA。 如果BB5 = 2隐藏H-K,AF-AM,AU-AV和AZ-BA列。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

根据BB5中的值隐藏列

示例:如果BB5 = 3隐藏列J-K,AJ-AM,AV和BA。如果BB5 = 2隐藏H-K,AF-AM,AU-AV和AZ-BA列。

function hideMyColumns()
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var vl=sh.getRange('BB5').getValue();
  var cols1=[10,11,36,37,38,39,48,53];
  var cols2=[8,9,10,11,32,33,34,35,36,37,38,39,47,48,52,53];
  switch(vl)
  {
    case 3:
      for(var i=0;i<cols1.length;i++)
      {
        sh.hideColumns(cols1[i]);
      }
      break;
    case 2:
      for(var i=0;i<cols2.length;i++)
      {
        sh.hideColumns(cols2[i]);
      }
  }

}

工作表用于计算列数

enter image description here

您可以使用此功能来确定列号。只需在正确的行和颜色上选择一个单元格,此函数将为您提供一个字符串,您可以将其复制到可在switch语句中使用的数组中。我使用上面提供的图像来获取所需的列号。

function getColumns()
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var color=ss.getActiveCell().getBackground();
  var row=ss.getActiveCell().getRow();
  var rg=sh.getDataRange();
  var vA=rg.getBackgrounds();
  var s='';
  var firstTime=true;
  for(var i=0;i<vA.length;i++)
  {
    for(var j=0;j<vA[0].length;j++)
    {
      if(i+1==row && vA[i][j]==color)
      {
        if(!firstTime){s+=',';}
        s+=Number(j+1);
        firstTime=false;
      }
    }
  }
  s+='<br />For color = ' + color + '<br />Row = ' + row;
  var userInterface=HtmlService.createHtmlOutput(s);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Column Numbers');
}