隐藏/取消隐藏不包括特定行的行



我在appscript的基础上,并在这个社区的帮助下逐步学习它。如有任何帮助,我将不胜感激。

我正试图设计一个脚本,隐藏和隐藏行对选择的变化,我得到了一个解决方案,从问题张贴在下面的链接。

使用appscript隐藏/取消隐藏行

下面是上面链接

给出的代码
function onEdit(e) {
const sh = e.range.getSheet();
const rg = e.source.getRangeByName("NamedRange1");
const sr = rg.getRow();
const sc = rg.getColumn();
const er = sr + rg.getHeight() - 1;
const ec = sc + rg.getWidth() - 1;
if (sh.getName() == "Sheet3" && e.range.columnStart >= sc && e.range.columnStart <= ec 
&& e.range.rowStart >= sr && e.range.rowStart <= er && e.value) {
//e.source.toast("Flag1")
const sh2 = e.source.getSheetByName("Sheet2");
const vs = sh2.getDataRange().getValues();
vs.forEach((r, i) => {
if (r.every(e => e == '')) {
if (e.value == "A") {
sh2.hideRows(i + 1);
} else {
sh2.showRows(i + 1)
}
}
});
}
}

代码给出了正确的结果,但我想在相同的一点修改。代码的unhide命令隐藏工作表的所有行,但是我希望代码取消隐藏工作表的第一行以外的所有行。

如果有任何帮助,我将不胜感激。

The unhide command of the code unhides all the rows of the sheet, however I want the code to unhide all the rows except first row of the sheet.开始,以下修改如何?

:

vs.forEach((r, i) => {
if (r.every(e => e == '')) {
if (e.value == "A") {
sh2.hideRows(i + 1);
} else {
sh2.showRows(i + 1)
}
}
});

:

vs.forEach((r, i) => {
if (r.every(f => f == '')) {
if (e.value == "A") {
sh2.hideRows(i + 1);
} else if (i > 1) {
sh2.showRows(i + 1);
}
}
});
  • 当这反映在脚本中时,sh2.showRows(i + 1)e.value != "A"i > 1时运行。因此,跳过第一行。
  • 而且,在r.every(e => e == '')的情况下,e已经与事件对象一起使用。所以,我把它改成了f

最新更新