Apps Script содержит метод copyTo , документация содержит образец:
// The code below copies the first 5 columns over to the 6th column.
var sheet = SpreadsheetApp.getActiveSheet();
var rangeToCopy = sheet.getRange(1, 1, sheet.getMaxRows(), 5);
rangeToCopy.copyTo(sheet.getRange(1, 6));
Вы можете адаптировать этот образец к вашему вопросу, но выполнив две модификации:
- Вместо того, чтобы копировать диапазон в диапазон на одном и том же листе - задайте два разных листа и скопируйте его с одного на другой
- При определении диапазона с помощью метода getRange (строка, столбец , numRows, numColumns) вместо присвоения параметрам статических чисел c, динамически извлекайте значения из таблицы.
Пример:
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet1 = spreadsheet.getSheetByName("Sheet1");
var sheet2 = spreadsheet.getSheetByName("Sheet2");
var sheet3 = spreadsheet.getSheetByName("Sheet3");
//adapt the ranges to the real cells contianing the row information
var startRow = sheet1.getRange("A1").getValue();
var endRow = sheet1.getRange("B1").getValue();
var rowNumber = endRow-startRow+1;
var rangeToCopy = sheet2.getRange(startRow, 1, rowNumber, sheet2.getLastRow());
rangeToCopy.copyTo(sheet3.getRange(startRow, 1));
}