Копирование диапазона с одного листа на определенный диапазон на другом листе - PullRequest
0 голосов
/ 26 мая 2019

Данные из листа ответов формы «EFS» необходимо скопировать в лист «QE».Диапазон для листа назначения не начинается в столбце A Строка1, вместо этого он должен начинаться в столбце C строки 3. Поскольку это активная форма, когда создается новая запись, эту запись необходимо скопировать в последнюю строку вцелевой лист "QE" Это то, что я до сих пор.Я получаю сообщение об ошибке:

Количество строк в данных не соответствует количеству строк в диапазоне.У данных 26751, но диапазон 20. (строка 15, файл "QETaskList")

Я пытался изменить диапазон, но я получаю другие ошибки.

function CopyGradesToQETaskList() {

var sss = SpreadsheetApp.openById("1PK-nMvqIoXaL1nrYPRIWr72I5IQ3wd9sjeztMtR9J1M"); 
var ss = sss.getSheetByName('EFS'); 


var lastRowSource = ss.getLastRow();
var source = sss.getRange("A2:p2" + lastRowSource);    
values = source.getValues();

var TargetSource = SpreadsheetApp.getActiveSpreadsheet();
var TargetSheet = TargetSource.getSheetByName('QE');
var last_row = TargetSheet.getLastRow();
TargetSheet.insertRowAfter(last_row)
var tsRange = TargetSheet.getRange("C2:R2"+last_row);
tsRange.setValues(values);

}

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Отчасти проблема в том, что lastRowSource и last_row не имеют одно и то же значение.

Другая проблема заключается в том, что выражения "A2:p2" + lastRowSource и "C2:R2"+last_row неверны

Допустим, что оба листа имеют одинаковое количество строк.Проблема в том, что если последняя строка на обоих листах равна 10, результатом вышеупомянутых выражений будут A2:p210 и C2:R210 соответственно, в то время как весьма вероятно, что вы ожидаете A2:p10 и C2:R10.

0 голосов
/ 27 мая 2019

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

function CopyGradesToQETaskList() {
  var ss=SpreadsheetApp.openById("SSID"); 
  var sh=ss.getSheetByName('EFS'); 
  var src=sh.getRange(sh.getLastRow(),1,1,16);
  var vA=src.getValues();
  var tss=SpreadsheetApp.getActive();
  var tsh=tss.getSheetByName('QE');
  var trg=tsh.getRange(tsh.getLastRow()+1,3,1,16);
  trg.setValues(vA);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...