【问题标题】:Copying a range from one sheet to a specific range in another sheet将一个工作表中的范围复制到另一工作表中的特定范围
【发布时间】:2019-05-26 16:54:19
【问题描述】:

需要将表单响应表“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);

}

【问题讨论】:

  • 要复制的范围大小是多少?

标签: google-apps-script google-sheets


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    部分问题在于lastRowSourcelast_row 的值不同。

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

    假设两张纸的行数相同。问题是,如果两张纸上的最后一行都是 10,则上述表达式的结果分别为 A2:p210C2:R210,而您很可能期望 A2:p10C2:R10

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多