Скрыть все строки, кроме заголовка и последней строки - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь настроить скрипт, который скрывает все мои строки на листе, кроме заголовка и последней строки.Сценарий используется для работы, но затем я добавил скрытую строку в самом верху листа, и она остановилась.Я подумал, что было бы легко исправить, просто настроить номер так, чтобы он начинался с третьего ряда, поскольку второй ряд теперь является моим замороженным заголовком, но, похоже, он не работает для меня.Ошибка, которую я получаю, когда я пытаюсь сделать sh.hideRow, и он говорит: «Эти строки выходят за пределы».для моей переменной destRange.Я предполагаю, что проблема в моем третьем параметре для getRange, но я не знаю, что еще это может быть.

// *****NOT WORKING*****
// HIDES ALL ROWS EXCEPT HEADER THEN UNHIDES LAST ROW
function HideRowsByQuarter() {
  var ss = SpreadsheetApp.openById('spreadsheetId').getSheets()
    .filter(function(sh) {
      return sh.getTabColor() == '#ff9901';
    }).forEach(function(sh) {
      var destRange = sh.getRange(3, sh.getMaxColumns(), sh.getLastRow());
      var unhideRow = sh.getRange(sh.getLastRow(), 1)
      sh.hideRow(destRange);
      sh.unhideRow(unhideRow);
    })
};

1 Ответ

0 голосов
/ 27 февраля 2019
  • Вы хотите скрыть все строки, кроме 2 верхних и последней строки на листе.

Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • 3-й аргумент getRange() - количество строк.В вашем скрипте getRange(3, sh.getMaxColumns(), sh.getLastRow()) используется как скрытые строки.
    • При этом строки от верхней 3 строки до последней строки + 2 скрываются.
    • Вы хотите скрыть строки, кроме последней строки.
    • Поэтому, пожалуйста, измените наgetRange(3, sh.getMaxColumns(), sh.getLastRow() - 3).Я подумал, что это может быть причиной вашей проблемы.
  • В результате вышеуказанной модификации, я думаю, что не требуется использовать unhideRow().

Модифицированный скрипт:

Пожалуйста, измените ваш скрипт следующим образом.

С:
var destRange = sh.getRange(3, sh.getMaxColumns(), sh.getLastRow());
var unhideRow = sh.getRange(sh.getLastRow(), 1)
sh.hideRow(destRange);
sh.unhideRow(unhideRow);
Кому:
var destRange = sh.getRange(3, sh.getMaxColumns(), sh.getLastRow() - 3);
sh.hideRow(destRange);

Ссылка:

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

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