Скрипт для копирования данных между листами - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь создать скрипт для копирования данных с листа 1 на лист 2 и в то же время изменить его порядок. Я получаю свои данные из формы Google, поэтому данные постоянно обновляются.

Вот два изображения в качестве примеров. № 1 - это то, как у меня есть данные, № 2 - это то, как я хочу, чтобы они были в листе 2.

Идея состоит в том, чтобы скрипт копировал данные каждый раз, когда появляется новая строка.

Данные из форм.

Data from Form

Вот как бы мне хотелось.

This is how I would like it to be

Это мой начальный код:

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.

1 Ответ

0 голосов
/ 05 июля 2018

Это можно сделать проще, используя формулы вместо сценариев приложения:

=sort(importrange("spreadsheetURL", "Sheet1!A2:AA10000"),sort_col#,TRUE/FALSE,[sort_col2#],[TRUE/FALSE]...)

Документация по функции importrange: https://support.google.com/docs/answer/3093340 Документация по функции сортировки: https://support.google.com/docs/answer/3093150

Как только вы введете формулу, в ячейке, скорее всего, появится красный треугольник, обязательно нажмите на ячейку и нажмите кнопку «Разрешить доступ», чтобы предоставить одной электронной таблице доступ к другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...