根据单元格值隐藏列

use*_*225 5 google-sheets google-apps-script

在我的谷歌电子表格A中,我使用TRANSPOSE和IMPORTRANGE公式的组合从日历电子表格B导入数据,以填写事件的工作时间表.因为在每个日期都有3个事件槽,并不总是填充,我得到了很多过时的列.

表格布局:

row1:  01-01-2013  01-01-2013  01-01-2013  02-01-2013
row2:  Event_ID    Event_ID    Event_ID    Event_ID
row3:  Event_name  Event_name  Event_name  Event_name
Run Code Online (Sandbox Code Playgroud)

第1行和第2行包含自动生成的日期和event_ID,因此这些日期永远不会为空.Cell nr.当没有事件添加到该槽时,3显示为空,但实际上在那里有一个CONTINUE-formula,用于从单元格A1继续importrange-formula.

我正在寻找一个脚本来自动隐藏单元格中的colums.3不包含导入的数据.

我不理解关于JavaScript的事情(但愿意学习),我试图结合现有脚本中的各个部分,但此时我无法理解这些代码......

Jac*_*tra 5

以下代码可以解决问题:

function onOpen() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // create menu
  var menu = [{name: "Hide columns", functionName: "hideColumn"},
    {name: "Show all columns", functionName: "showColumn"}];

  // add to menu
  ss.addMenu("Check", menu);
}

function hideColumn() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get first sheet
  var sheet = ss.getSheets()[0];

  // get data
  var data = sheet.getDataRange();

  // get number of columns
  var lastCol = data.getLastColumn()+1;

  Logger.log(lastCol);

  // itterate through columns
  for(var i=1; i<lastCol; i++) {
     if(data.getCell(3, i).getValue() == '') {
        sheet.hideColumns(i);
     }
  }
}

function showColumn() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get first sheet
  var sheet = ss.getSheets()[0];

  // get data
  var data = sheet.getDataRange();

  // get number of columns
  var lastCol = data.getLastColumn();

  // show all columns
  sheet.showColumns(1, lastCol);
}
Run Code Online (Sandbox Code Playgroud)
  1. 打开文件时创建菜单
  2. 第一个菜单选项,隐藏第3行为空的所有列
  3. 第二个选项,显示所有隐藏的列

请参阅我准备好观察它的示例文件:根据单元格值隐藏列