我有52个命名范围,从W1到W52。我想让我的Google表格工作表隐藏除了我在单元格B1和行1中输入的命名范围之外的所有行,这样我就可以在指定范围之间切换以取消隐藏。例如,如果我把" W1"进入单元格B1,只有第1行和指定范围W1内的所有行都将取消隐藏,而其余行保持隐藏状态。
这可能吗?我怎样才能做到这一点?
答案 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;
}
}
}
}