在单元格中输入时取消隐藏命名范围

时间:2017-09-24 16:24:52

标签: google-apps-script

我有52个命名范围,从W1到W52。我想让我的Google表格工作表隐藏除了我在单元格B1和行1中输入的命名范围之外的所有行,这样我就可以在指定范围之间切换以取消隐藏。例如,如果我把" W1"进入单元格B1,只有第1行和指定范围W1内的所有行都将取消隐藏,而其余行保持隐藏状态。

这可能吗?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为这会奏效: 我假设你没有其他名为onEdit()的函数。如果你这样做,你必须将它们逻辑地组合成一个函数。对于onEdit触发器,这可能是很多功能,因为我认为在触发器上脚本超时之前只有30秒。当你写入屏幕时,它需要花费很多时间。

function onEdit()
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  if(sh.getName()=="Sheet1")//It will only do this on Sheet1
  {
  var lr=sh.getLastRow();
  var name=sh.getRange('B1').getValue();
  sh.hideRows(2, lr-1);
  var allRanges=ss.getNamedRanges();
  var rows=[];
  for(var i=0;i<allRanges.length;i++)
  {
    if(allRanges[i].getName()==name)
    {
      var rgi=allRanges[i].getRange();
      var toprow=rgi.getRow();
      var numrows=rgi.getNumRows();
      sh.showRows(toprow, numrows);
      break;
    }
  }
  }
}