如何在多个工作表上运行脚本,Google表格

问题描述 投票:0回答:1

我有一个脚本,我想在我的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);
      });
  }

有关如何正确做到这一点的任何建议?如果我认为更容易,我怎么能在所有选项卡上执行此操作?

谢谢!

google-apps-script google-sheets
1个回答
0
投票

你可以做2种方式。使用'exclude'或'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);
      });
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.