在谷歌应用程序脚本中将数据从一个工作表复制到另一个工作表并附加一行,一个小问题

时间:2017-07-07 09:19:32

标签: google-apps-script

确定我已经把它弄下来了但是却无法做到。设置了一个脚本来从一张纸上获取数据并将其放入另一张纸中,我已经完成了但是它在复制时留下了空白,我无法弄清楚如何解决它。我确信在代码中,我在哪里放了一个问号,问题出在哪里。

我已经尝试过把我,最后一次,最后一次+ 1,10,12但这些工作都没有,感觉我错过了一些小的东西才能做到这一点。下面是代码,如果需要,可以查看工作表的链接(该工作表仅供我学习,如果您愿意,可以使用基本示例)。

先谢谢,如果代码写的更好,请告诉我,因为还在学习这个:)

function copyInfo() {
  var app = SpreadsheetApp;
  var copySheet = app.getActiveSpreadsheet().getSheetByName("Copy");
  for (var i = 2; i <12; i++) {   
  var getInfo = copySheet.getRange(2,2,i,2).getValues();
  //  get the info from range above - start at row 2 on column 2 (b), get number of rows i , number of columns = 2, b,c 
  var last = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Paste").getLastRow();
  var pasteSheet = app.getActiveSpreadsheet().getSheetByName("Paste");
//  Tell it where you want the info to go to 

  pasteSheet.getRange(last+1,1,?,2).setValues(getInfo);
  var clearIt = copySheet.getRange(2,2,i,2).clearContent();  
// this clears the copy range aka getInfo
  }}

link to sheet

1 个答案:

答案 0 :(得分:2)

您可以使用copyTo一次复制整个范围,因此您的功能可以重写为:

function copyInfo() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName("Copy");
  var pasteSheet = ss.getSheetByName("Paste");

  // get source range
  var source = copySheet.getRange(2,2,12,2);
  // get destination range
  var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);

  // copy values to destination range
  source.copyTo(destination);

  // clear source values
  source.clearContent();
}