如何使用脚本确定某个列是否隐藏在Google电子表格中?

Dan*_*ano 6 google-sheets google-apps-script

我正在尝试为Google Spreadsheet编写一个函数,用于查找组的第一列和最后一列.然后隐藏该组,或者如果它已经隐藏则显示该组.

但是,我无法找到确定列是否隐藏的方法.我在Google的"课程表"页面https://developers.google.com/apps-script/reference/spreadsheet/sheet上找不到任何内容,但我找不到与Excel相同的内容.hidden

getColumnWidth(column)返回未隐藏的列宽,即使它被隐藏.

这是我的代码:

function hideShowColumns(startCol, endCol) { 
  //endCol is one column past the last data set that should be hidden
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Transposed Data");
  //import the data from the Column Headers
  var colHeaderData = sheet.getRange(1, 1, 2, sheet.getMaxColumns()).getValues(); 
  var startColNum = 0;
  var endColNum = 0;

  // This section searches for the column names in the header rows and returns their column number
  for (var i =0; i < 2; ++i) {
    for (var j = 0; j < colHeaderData[0].length; ++j) {
      if (colHeaderData[i][j] == startCol) 
        startColNum = j;
      if (colHeaderData[i][j] == endCol) 
        endColNum = j;
    }
  }

  //This is the wrong command getColumnWidth doesn't change if column is hidden
  if (sheet.getColumnWidth(startColNum + 1) != 0) {
    sheet.hideColumns(startColNum + 2, endColNum - startColNum - 1);
    Logger.log(sheet.getColumnWidth(startColNum + 2));
    return;
  }

  //This is the wrong command getColumnWidth doesn't change if column is hidden
  if (sheet.getColumnWidth(startColNum + 1) == 0) { 
    for (var j = startColNum + 1; j < endColNum - 1; ++j) {
      sheet.unhideColumn(j);
      Logger.log(sheet.getColumnWidth(startColNum + 2));     
    }
    return;
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

小智 9

新的(截至 2018 年)api 是: isColumnHiddenByUser(columnPosition)

返回给定的列是否被用户隐藏。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

// Columns start at 1
Logger.log(sheet.isColumnHiddenByUser(1));
Run Code Online (Sandbox Code Playgroud)


Ada*_*amL 6

遗憾的是,没有Google Apps脚本方法会返回是否隐藏列或行.作为一种方式,你可能想为它打开的问题加注星标.接收有关该问题的更新,以及b."签署请愿书",可以这么说.

https://code.google.com/p/google-apps-script-issues/issues/detail?id=195&q=hidden%20column&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner

  • 这被标记为固定:相关方法是 https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#iscolumnhiddenbyusercolumnposition。有几个答案提到了这一点。 (2认同)