Фильтровать или скрыть строку

[Назад история] У меня есть Google Sheet, который я использую для рассылки расписаний субподрядчикам. Каждый субподрядчик имеет свой собственный лист, и у меня также есть один последний лист, который называется MasterSchedule.

В основном графике используются ссылки на все отдельные листы, так что все графики субподрядчиков являются видимыми. Хотя это слишком долго. Поэтому я включил вспомогательный столбец во все листы, который просто возвращаетправда или желожный указывает, должна ли строка отображаться или нет на мастере.

Тем не менее, строка по-прежнему отображается на главном сервере, но вспомогательный столбец просто говорит ложь. Поэтому я использовал Автофильтр, чтобы скрыть его.

TLDR:

Проблема: Google Apps Script не имеет API для автоматического фильтра. Как VBA, используя критерии и т. Д. Так что единственный вариант, который я вижу, - это скрыть строки. Но это очень медленно. Я знаю, что идея состоит в том, чтобы уменьшить количество обращений к службам Google, и Google предлагает создать массив, а затем исключить вызов в массиве. Я понятия не имею, как это сделать.

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

Самый быстрый способ без использования сценариев - использовать версию автофильтра Google Sheets и просто отменить проверкуложный.

Я попытался создать цикл for, который читает каждую ячейку в столбце и на каждой итерации скрывает строку, если значение ячейки равно false.Это невероятно медленно.

Видеть:

function MasterFilter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var maxRows = sheet.getMaxRows();

  //show all the rows
  sheet.showRows(1, maxRows);

  //get data from column B
  var data = sheet.getRange('B:B').getValues();

  //iterate over all rows
  for(var i=5; i< data.length; i++){
    if(sheet.getRange(i,2).getValue() == false){
      sheet.hideRow(i);
    }
  }
}

Ответы на вопрос(1)

Ваш ответ на вопрос