我有一个脚本,我想在我的Google工作表中的特定标签上运行,但不一定是所有标签。我尝试了两个不同命名的脚本,但只运行了保存的最后一个脚本。如何编写此脚本以在特定选项卡上运行?这是我开始的脚本:
function onEdit() {
var s = SpreadsheetApp.getActive().getSheetByName('Proposal');
s.showRows(1, s.getMaxRows());
s.getRange('B:B')
.getValues()
.forEach( function (r, i) {
if (r[0] == 'Hide')
s.hideRows(i + 1);
});
}
我试着像这样修改,使用其他问题的建议,但它没有用。
function onEdit() {
var tabs = [
'Proposal',
'Materials List - All',
'Materials List - Shingles',
'Materials List - Access',
'Work Order'
];
var ss=SpreadsheetApp.getActiveSpreadsheet();
for (var i = 0; i < tabs.length; i++) {
var sheet = ss.getSheetByName(tabs[i]);
s.showRows(1, s.getMaxRows());
s.getRange('B:B')
.getValues()
.forEach( function (r, i) {
if (r[0] == 'Hide')
s.hideRows(i + 1);
});
}
有关如何正确做到这一点的任何建议?如果我认为更容易,我怎么能在所有选项卡上执行此操作?
谢谢!
你可以做2种方式。使用'exclude'或'only'。
如果当前工作表是其中之一,则不要这样做。
只是意味着,只有当前工作表是其中之一时才这样做。
使用下面的代码并启用任何一个选项然后尝试。要启用,请将相应的工作表名称添加到excludes
或only
数组,并通过取出//
取消注释行。它仅适用于当前工作表,而不适用于电子表格中的所有工作表。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
// use only one of these 2 options
// add sheets names to exclude, example ['Sheet1', 'Sheet2']
// to exclude these sheets enable these 2 lines below by uncommenting
// var excludes = [];
// if (excludes.indexOf(s.getName()) != -1) return;
// add sheet names to work on only these sheets, as above
// to work on only these sheets enable these 2 lines below by uncommenting
// var only = [];
// if (only.indexOf(s.getName()) == -1) return;
s.showRows(1, s.getMaxRows());
s.getRange('B:B')
.getValues()
.forEach(function(r, i) {
if (r[0] == 'Hide') s.hideRows(i + 1);
});
}
编辑
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var only = [
'Proposal',
'Materials List - All',
'Materials List - Shingles',
'Materials List - Access',
'Work Order'
];
only.forEach(function(name) {
var s = ss.getSheetByName(name);
s.showRows(1, s.getMaxRows());
s.getRange('B:B')
.getValues()
.forEach(function(r, i) {
if (r[0] == 'Hide') s.hideRows(i + 1);
});
});
}