如何使用 Google 脚本 hide/unhide 列的命名范围

How to hide/unhide a named range of columns with Google script

任何可以帮助我编写脚本的人,该脚本允许我隐藏或显示已手动命名的列。 下面的代码仅 hides/displays 特定列,我的问题是用户可以在命名范围内 insert/delete 列,这会导致命名列的范围动态变化。我认为当按名称操作范围时,代码将动态包含命名范围中的列。

    function showColBasicInfo() {
      sheet.showColumns(4,5);
      sheet.getRange(1, 4).activate();
    }
    function hideColBasicInfo() {
      sheet.hideColumns(4,5);
      sheet.getRange(1, 4).activate();
    }

我做了更多:这段代码将文档中的所有命名范围加载到一个数组中,我可以通过将它加载到一个变量中来搜索特定的范围,但这是我所能得到的。

    function returnRangeName1() {
      var rangeName = "H2aCI"; //Nombre de rango a buscar
      var RangosCNombre = SpreadsheetApp.getActiveSpreadsheet().getNamedRanges();
      for(var i = 0; i < RangosCNombre.length; i++) {
        if(RangosCNombre[i].getName() == rangeName) {
          Logger.log(RangosCNombre[i].getName() + " encontrado");
        }
        //Logger.log(RangosCNombre[i].getName());
      }
    }

我需要知道我应该在 GAS 中编写什么代码来隐藏找到的范围。我将不胜感激任何帮助。谢谢。

我相信你的目标如下。

  • 您想隐藏指定范围的列。
  • 在您的脚本中,您想隐藏 H2aCI 的命名范围内的列。

修改点:

  • 在这种情况下,您可以直接从 H2aCI 的名称中检索命名范围。
  • 并且,您可以从命名范围中检索列的信息。使用此信息,您可以隐藏命名范围的列。

当以上几点反映到你的脚本中,就会变成下面这样。

修改后的脚本:

function returnRangeName1() {
  var rangeName = "H2aCI";

  var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(rangeName);
  if (range) range.getSheet().hideColumns(range.getColumn(), range.getNumColumns());
}

参考文献: