getLastRow не возвращает результата - PullRequest
0 голосов
/ 12 июня 2019

У меня есть этот простой код для копирования транспонированного диапазона в последнюю строку другого листа, начиная со столбца 14

   function copyAllInRange(){
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    var sheet = ss.getActiveSheet();
    var destsheet = ss.getSheetByName('Database')
    var destrow = destsheet.getLastRow()

    var rangeToCopy = sheet.getRange(53, 4, sheet.getMaxRows(), sheet.getRange('54:54').getLastColumn());
    rangeToCopy.copyTo(destsheet.getRange(destrow,14),SpreadsheetApp.CopyPasteType.PASTE_VALUES,true);

    }

Он возвращает нулевые результаты, как есть.Если я изменю destrow с формулы на простой 2 (теперь это последняя пустая строка), он работает нормально.Почему он не возвращает индекс последней строки в листе назначения?

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Весьма вероятно, что ss.getSheetByName('Database') возвращает null, потому что getLastRow() вернет 1 или большее число для любого листа.

0 голосов
/ 12 июня 2019

Попробуйте это:

function copyAllInRange(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var destsheet = ss.getSheetByName('Database');
  var destrow = destsheet.getLastRow();
  var rangeToCopy = sheet.getRange(53,4,sheet.getMaxRows()-52,sheet.getLastColumn()-3);//are really sure that you want to use getMaxRows() here cause that seems weird to me. 
  rangeToCopy.copyTo(destsheet.getRange(destrow + 1,14),SpreadsheetApp.CopyPasteType.PASTE_VALUES,true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...