Как запустить скрипт на нескольких листах, Google Sheets - PullRequest
0 голосов
/ 18 марта 2019

У меня есть скрипт, который я хотел бы запустить на определенных вкладках в моей рабочей таблице 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);
      });
  }

Любые предложения о том, как это сделатьдолжным образом?Как я могу сделать это на всех вкладках, если я решил, что это проще?

Спасибо!

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете сделать это 2 способами. Использование «исключить» или «только».

исключить означает, не делайте этого, если текущий лист является одним из них.

только означает, что делать это можно только в том случае, если текущие листы являются одним из них.

Используйте приведенный ниже код и включите любую опцию, затем попробуйте. Чтобы включить, добавьте соответствующие имена листов в массив 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);
    });
}

EDIT

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);
      });
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...