Скрипт приложения Google Sheets для скрытия строк в пакете на основе столбца las каждой вкладки - PullRequest
0 голосов
/ 18 марта 2019

У меня есть листы Google, которые имеют много вкладок, некоторые из них имеют разные макеты

Мне нужен скрипт для запуска на всех вкладках (и иметь возможность исключать некоторые вкладки), чтобы скрыть строки, содержащие 1в самом последнем столбце каждой строки на каждой вкладке

Это должно быть скрытие в пакете, так как у меня много строк, и если скрывать строку за строкой, это превышает время выполнения

любая помощь будет очень ценится

Спасибо!

1 Ответ

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

Вы должны прочитать каждый лист, отслеживать диапазоны со строками, которые имеют 1 в последнем столбце, и скрывать эти диапазоны 1 на 1. Ниже код пытается это сделать. Посмотрите, работает ли это в вашем случае. Введите точные имена листов, которые вы хотите исключить, внутри массива excludes.

function test() {
  // get spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // get all sheets
  var sheets = ss.getSheets();

  // put exact sheet names in array to exclude, sample ['Sheet1', 'Sheet2']
  var excludes = [];

  for (var i = 0; i < sheets.length; i++) {
    // if sheet is to exclude,do nothing
    if (excludes.indexOf(sheets[i].getName()) != -1) continue;
    // hide rows of this sheet
    hideRows(sheets[i]);
  }
}

function hideRows(sheet) {
  // variables
  var start = null,
    range = 0,
    flag = false;
  // read all values
  var values = sheet.getDataRange().getValues();

  // for each row
  values.forEach(function(row, idx) {
    // if row last col is 1, set up start and range
    if (row[row.length - 1] == 1) {
      if (flag) {
        range++;
      } else if (!flag) {
        start = idx + 1;
        range++;
        flag = true;
      }
      return;
    }
    // row last col is not 1, hide last found range of rows
    // reset variables
    if (flag) {
      sheet.hideRows(start, range);
      flag = false;
      start = null;
      range = 0;
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...