Google Sheets Скрыть строки на нескольких листах - PullRequest
0 голосов
/ 01 февраля 2019

Я новичок во всем этом коде сценария, и у меня возникли проблемы с уточнением сценария, который у меня сейчас запущен.Я нашел код, который я использую здесь .Мне удалось изменить его, чтобы он работал в столбце E моего рабочего листа, и он прекрасно работает на этом одном листе.

Мне бы хотелось, чтобы он работал на нескольких листах в рабочей книге, но я недостаточно знакомс языком / синтаксисом кодирования, чтобы заставить его работать.Я пытался извлечь фрагменты кода из других постов с той же целью, чтобы ошибка скрипта была в части кода, которая работала ранее.

Код выглядит следующим образом:

function onOpen() {
    var s = SpreadsheetApp.getActive()
        .getSheetByName('BV421');
    s.showRows(1, s.getMaxRows());
    s.getRange('E:E')
        .getValues()
        .forEach(function (r, d) {
            if (r[0] !== '' && r[0].toString()
                .charAt(0) == 0) s.hideRows(d + 1)
        });
}

Я знаю, что проблема (по крайней мере частично) связана с .getSheetByName ('BV421'), но я не уверен, как заставить его выбрать несколько листов.У меня есть другие листы (например, Alexafluor488, PerCP, FITC и т. Д.), На которых я хотел бы запустить сценарий, но не на всех листах в рабочей книге.

Любая помощь, которую вы можете предоставить, будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Пример кода 2:

function onOpen() {
  var ss = SpreadsheetApp.getActive();
  ['BV421', 'Alexafluor488', 'PerCP', 'FITC'].forEach(function(sheetName) {
    var s = ss.getSheetByName(sheetName);
    // here do everything you need with the sheet s
    s.showRows(1, s.getMaxRows());
    s.getRange('E:E').getValues().forEach(function (r, d) {
      if (r[0] !== '' && r[0].toString().charAt(0) == 0) s.hideRows(d + 1);
    });
  });
}

Вы можете повторить фрагмент кода для каждого листа, указанного в массиве, если получите ссылку на лист - s .

0 голосов
/ 01 февраля 2019

Пример кода:

    function getSheets(){

    var ss = SpreadsheetApp.getActiveSpreadsheet(); //Gets the Spreadsheet
    var sheets = ss.getSheets(); //Gets all the sheets in the spreadsheet

      //For the number of sheets, do the following:
      for (var i = 0; i < sheets.length; i++){

      var currentSheet = sheets[i];

      Logger.log(currentSheet.getRange(1, 1, 1, 1).getValue());


      }

    }

Если вы не хотите начинать с первого листа, измените значение «i».Если вы не хотите, чтобы скрипт просматривал все листы, замените значение sheet.length на фиксированное.

Надеюсь, это поможет.

Редактировать: Другие участники, не стесняйтесь редактировать этот пост.добавить ссылки на документацию или просто объяснить это лучше.(Есть работа, которой я должен заниматься.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...