[英]How to run multiple onEdit functions in the same google script (google sheets)?
[英]How to run a script on multiple sheets, Google Sheets
我有一個腳本,我想在我的 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 種方式完成。 使用“排除”或“僅”。
排除意味着,如果當前工作表是其中之一,則不要這樣做。
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);
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.