Я пытаюсь создать скрипт для копирования данных с листа 1 на лист 2 и в то же время изменить его порядок. Я получаю свои данные из формы Google, поэтому данные постоянно обновляются.
Вот два изображения в качестве примеров. № 1 - это то, как у меня есть данные, № 2 - это то, как я хочу, чтобы они были в листе 2.
Идея состоит в том, чтобы скрипт копировал данные каждый раз, когда появляется новая строка.
Данные из форм.
![Data from Form](https://i.stack.imgur.com/E2hoa.jpg)
Вот как бы мне хотелось.
![This is how I would like it to be](https://i.stack.imgur.com/MX8E8.jpg)
Это мой начальный код:
function copyrange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Ingreso'); //source sheet
var testrange = sheet.getRange('J:J');
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName('Auxiliar Ingreso'); //destination sheet
var data = [];
var columnasfijas = [];
var cadena = [];
//Condition check in G:G; If true copy the same row to data array
for (i=1; i<testvalue.length;i++) {
data.push.apply(data,sheet.getRange(i+1,1,1,9).getValues());
if ( testvalue[i] == 'Si') {
data = (sheet.getRange(i+1,1,1,9).getValues()).concat (sheet.getRange(i+1,11,1,9).getValues()); // this beaks up into 2 rows Idon't know why
/*cadena = (columnasfijas);
data.push.apply(data, columnasfijas);*/
}
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
//Copy data array to destination sheet
//csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
В этой строке у меня также возникают проблемы с объединением данных различной длины. Должно быть: (i+1,1,1,6). concat.....(i+1,11,1,3)
data = (sheet.getRange(i+1,1,1,9).getValues()).concat (sheet.getRange(i+1,11,1,9).getValues()); // this beaks up into 2 rows Idon't know why
Когда я запускаю его как следует, я получаю сообщение об ошибке, что длина должна быть 9 вместо 3.