将范围从一张纸复制到另一张纸的特定区域

时间:2019-05-26 16:54:20

标签: google-apps-script google-sheets

需要将表单响应表“ EFS”中的数据复制到“ QE”表中。目标工作表的范围不是从A列的第1行开始,而是应该从第3列的C列开始。因为这是活动形式,所以在创建新条目时需要将该条目复制到表格的最后一行。目的地清单“ 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 :(得分:0)

尝试一下:

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);
}

答案 1 :(得分:0)

部分问题是lastRowSourcelast_row的值不同。

另一个问题是表达式"A2:p2" + lastRowSource"C2:R2"+last_row错误

假设两个工作表的行数相同。问题在于,如果两张纸上的最后一行都在10,则上述表达式的结果分别是A2:p210C2:R210,而您很可能期望A2:p10和{{1} }。