簡體   English   中英

如何在多個工作表上運行腳本,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意味着,僅當當前工作表是其中之一時才執行此操作。

使用下面的代碼並啟用任何一個選項,然后嘗試。 要啟用,請通過取出//添加相應的工作表名稱以excludesonly數組和取消注釋行。 它僅適用於當前工作表,而不適用於電子表格中的所有工作表。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM