如何在多个工作表(Google工作表)上运行脚本

时间:2019-03-18 14:51:50

标签: google-apps-script google-sheets

我有一个脚本,希望在我的Google工作表中的特定选项卡上运行,但不一定要在所有选项卡上运行。我尝试执行两个名称不同的脚本,但是只有最后一个保存的脚本会运行。如何编写此脚本以在特定选项卡上运行?这是我的开始脚本:

display: inline-block;
vertical-align: middle;

我尝试使用发布的另一个问题的建议进行这样的修改,但这没有用。

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);
    });
}

有关如何正确执行此操作的任何建议?如果我认为这更容易,该如何在所有标签上执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过2种方式来实现。使用“排除”或“仅”。

排除是指,如果当前工作表是其中之一,则不要这样做。

意味着,仅当当前工作表是其中之一时才执行此操作。

使用以下代码并启用任何一个选项,然后尝试。要启用该功能,请将相应的工作表名称添加到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);
      });
  });
}