编译空行列表并将其隐藏在 Google App 脚本中



正如 name 函数所揭示的那样,我需要隐藏第 4 列向前的一些空白行,但逐一执行会使过程非常缓慢,所以我的想法是将所有值放入一个列表中,然后将此列表提供给 hideRows 函数并一次隐藏所有行。这给了我一个错误,但老实说,我无法弄清楚我做错了什么。感谢您的帮助。

function HidingYoMama() {

for (var i=8;i<415;i++) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var targetRow = ss.getRange(i,4,1,ss.getLastColumn());
var isBlank = targetRow.isBlank();
var title = ss.getRange(i,1,1,3).isBlank();
var hideThisRows = [];
if (title == false) {
if(isBlank == true) {
var result = hideThisRows.push(targetRow[i]);
Logger.log(result);
}
}
}

var hideThem = ss.hideRows(hideThisRows);
Logger.log(hideThem); #Those rows are out of bounds. (line 187, file "Code")
}

我看了一下hideRow(s(方法的文档。因此,如果您查看以下内容,您将看到该方法接受两个参数。rowIndex(我应该从哪一行开始隐藏(,numRows 接受我应该隐藏从起点向下隐藏多少行。

hideRows(rowIndex, numRows(

这两个参数都接受单个整数值。一个例子是: sheet.hideRows(1,3( 这将从第一行开始隐藏并隐藏接下来的 3 行。

您收到错误是因为您正在有效地尝试将"[1,2,3,4,5,6,7,8]"推送到接受"1"的内容中。

我在 150 行(一个空白值(上测试了这段代码,它似乎运行良好。(执行时间为 12 秒。希望这有帮助。

function hideRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getActiveSheet()

for (var i = 1; i < sheet.getLastRow(); i++) {
if(sheet.getRange(i, 1, 1, 1).isBlank()) {
sheet.hideRows(i)
}
}
}

最新更新