Удалить пустые строки из таблицы с помощью скрипта - PullRequest
1 голос
/ 10 января 2020
function removeEmptyRows(){
  var sh = SpreadsheetApp.getActiveSheet();
  var maxRows = sh.getMaxRows(); 
  var lastRow = sh.getLastRow();
  sh.deleteRows(lastRow+1, maxRows-lastRow);
}

При активации скрипта возвращается сообщение об ошибке:

Эти строки находятся за пределами диапазона (строка 5)

Моя таблица:
enter image description here

Ответы [ 2 ]

1 голос
/ 10 января 2020

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

Как точка модификации, позволяющая избежать ошибки, как насчет следующей модификации?

От:

sh.deleteRows(lastRow+1, maxRows-lastRow);

Кому:

if (maxRows-lastRow > 0) {
  sh.deleteRows(lastRow+1, maxRows-lastRow);
}

Другой шаблон:

Или как насчет удаления пустых строк с использованием области данных из 1-й строки следующим образом?

function removeEmptyRows(){
  var sh = SpreadsheetApp.getActiveSheet();
  var lastRowOfDataRegion = sh.getRange("1:1").getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow();
  var maxRows = sh.getMaxRows(); 
  if (maxRows-lastRowOfDataRegion > 0) {
    sh.deleteRows(lastRowOfDataRegion+1, maxRows-lastRowOfDataRegion);
  }
}

Ссылка:

Если я неправильно понял ваш вопрос, прошу прощения.

1 голос
/ 10 января 2020
function removeEmptyRows(){
  var sh = SpreadsheetApp.getActiveSheet();
  if(sh.getLastRow()<sh.getMaxRows()) {
    sh.deleteRows(sh.getLastRow()+1, sh.getMaxRows()-sh.getLastRow());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...