Google 用于根据每个选项卡的 las 列批量隐藏行的表格应用脚本
Google Sheets app script to hide rows in batch based on the las column of each tab
我有一个 google 有很多标签的工作表,其中一些有不同的布局
我需要一个脚本来 运行 在所有选项卡上(并且能够排除一些选项卡)以隐藏每个选项卡上每一行的最后一列中包含 1 的行
这应该是批量隐藏,因为我有很多行,如果逐行隐藏它会超过执行时间
任何帮助将不胜感激
谢谢!
您必须阅读每个 sheet,跟踪最后一列中包含 1 的行的范围,并逐一隐藏这些范围。下面的代码尝试这样做。看看它是否适用于您的情况。在 excludes
数组中输入要排除的 sheet 的确切名称。
function test() {
// get spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get all sheets
var sheets = ss.getSheets();
// put exact sheet names in array to exclude, sample ['Sheet1', 'Sheet2']
var excludes = [];
for (var i = 0; i < sheets.length; i++) {
// if sheet is to exclude,do nothing
if (excludes.indexOf(sheets[i].getName()) != -1) continue;
// hide rows of this sheet
hideRows(sheets[i]);
}
}
function hideRows(sheet) {
// variables
var start = null,
range = 0,
flag = false;
// read all values
var values = sheet.getDataRange().getValues();
// for each row
values.forEach(function(row, idx) {
// if row last col is 1, set up start and range
if (row[row.length - 1] == 1) {
if (flag) {
range++;
} else if (!flag) {
start = idx + 1;
range++;
flag = true;
}
return;
}
// row last col is not 1, hide last found range of rows
// reset variables
if (flag) {
sheet.hideRows(start, range);
flag = false;
start = null;
range = 0;
}
});
}
我有一个 google 有很多标签的工作表,其中一些有不同的布局
我需要一个脚本来 运行 在所有选项卡上(并且能够排除一些选项卡)以隐藏每个选项卡上每一行的最后一列中包含 1 的行
这应该是批量隐藏,因为我有很多行,如果逐行隐藏它会超过执行时间
任何帮助将不胜感激
谢谢!
您必须阅读每个 sheet,跟踪最后一列中包含 1 的行的范围,并逐一隐藏这些范围。下面的代码尝试这样做。看看它是否适用于您的情况。在 excludes
数组中输入要排除的 sheet 的确切名称。
function test() {
// get spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get all sheets
var sheets = ss.getSheets();
// put exact sheet names in array to exclude, sample ['Sheet1', 'Sheet2']
var excludes = [];
for (var i = 0; i < sheets.length; i++) {
// if sheet is to exclude,do nothing
if (excludes.indexOf(sheets[i].getName()) != -1) continue;
// hide rows of this sheet
hideRows(sheets[i]);
}
}
function hideRows(sheet) {
// variables
var start = null,
range = 0,
flag = false;
// read all values
var values = sheet.getDataRange().getValues();
// for each row
values.forEach(function(row, idx) {
// if row last col is 1, set up start and range
if (row[row.length - 1] == 1) {
if (flag) {
range++;
} else if (!flag) {
start = idx + 1;
range++;
flag = true;
}
return;
}
// row last col is not 1, hide last found range of rows
// reset variables
if (flag) {
sheet.hideRows(start, range);
flag = false;
start = null;
range = 0;
}
});
}