Предполагая, что последняя строка в листе LP является строкой 8, тогда ваш расчет (sourceRows-5)
должен быть в порядке. (Также предполагается, что вы всегда хотите копировать 3 строки за раз.)
Проблема в том, что вы ввели 13
в качестве начального столбца диапазона. Вместо этого эта строка должна читаться как
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
Два других предложения:
- Вы получаете активную электронную таблицу дважды. Поместите его в переменную, так что вам не нужно этого делать.
var ss = SpreadsheetApp.getActiveSpreadsheet();
- Кажется, нет необходимости совершать вызов
activate()
на отдельных листах, поэтому рассмотрите возможность удаления.
Тогда у вас будет что-то вроде этого:
function Copy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var lp = ss.getSheetByName("LP");
var sourceRows = lp.getLastRow();
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
var tr= ss.getSheetByName("TR");
var trRows = tr.getLastRow();
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};