如何使用脚本基于列标签隐藏列?

时间:2018-02-05 07:05:33

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

我将本月的某些日子作为Google电子表格中的列。我正在尝试根据从单元格A2中的下拉列表中选择的月份来编写脚本来自动隐藏列。

到目前为止,我已经能够找到一个脚本,如果Row1中的值为0,我可以自动隐藏列。但是我在实现相同的问题时遇到了问题。我使用IF(OR)公式在要隐藏的列中显示0 [下面的封闭屏幕截图]。

enter image description here

这是我到目前为止提出的脚本,但它不起作用。

 oSheets = ThisComponent.getSheets()
oSheet1 = oSheets.getByName("MIS")
oColumns = oSheet1.getColumns()
var i=1;
while (i < 34) // continue running the loop while i is less than 34
{
   oCol = oColumns.getByIndex(i)
   oCell = oSheet1.getCellByPosition(i,0);
  if (oCell.Value = 0) { oCol.isVisible = False;}
  else {oCol.isVisible = True}
i++; }

代码中有错误吗?我是电子表格的新手,对Scripts来说是全新的,没有编码背景,因此很混乱。

1 个答案:

答案 0 :(得分:0)

感谢来自k4k4sh1的评论,我能够为这个特定的脚本获得正确的代码。

保存此功能后,您还必须设置项目触发器。

我参考了这篇博文:Customise Google Docs-Blogspot

function HideColumns() {
  //open the current spreadsheet and get the value of the named range
   var ss = SpreadsheetApp.getActive();
   var name = ss.getRangeByName("monthfilter");
   var namevalue = name.getValue();

  //show or hide February
  if (namevalue == "February") {
    var sheet = ss.getSheetByName("MIS");
    sheet.hideColumns(30);
    sheet.hideColumns(31);
    sheet.hideColumns(32);
  }

  //show or hide 30 day months
    else if (namevalue == "April"||namevalue == "June"||namevalue == "September"||namevalue == "November") {
    var sheet = ss.getSheetByName("MIS");
    sheet.showColumns(30);
    sheet.showColumns(31);
    sheet.hideColumns(32);
  }

   //show or hide 31 day months
    else if (namevalue == "January"||namevalue == "March"||namevalue == "July"||namevalue == "August"||namevalue == "October"||namevalue == "December") {
    var sheet = ss.getSheetByName("MIS");
    sheet.showColumns(30);
    sheet.showColumns(31);
    sheet.showColumns(32);
    }
}