Google Apps脚本 - 将数据复制到不同的工作表并附加

时间:2018-02-08 17:55:18

标签: google-apps-script google-sheets

我已经看过以前我能找到的所有问题,但我似乎永远不会让不同的例子适合我想要做的事情。

我的表单将由不同的用户填写。我想要数据"数据"选择"是"将要复制到相同格式的单独电子表格的工作表在All!H35的下拉菜单中。会有一个表格("信源")为每个将每天填写团队和理想,他们都在同一个主电子表格的数据复制到下一个空行(S)("目标&# 34;),创建所有工作的运行列表。

[来源] [1]

[目的地] [2]

编辑: 它部分工作,但只抓住第一个单元格,即使在调整剩余的列和行之后也是如此。

// Get the contents of a cell in srcSheet
  var range = srcSheet.getRange(1, 1, 16, 38);
  var values = range.getValues();

  // place it in the last row if the destination cell
  var range = srcSheet.getRange(1, 1, 16, 38);
  var values = range.getValues();

终于开始工作了。这是工作代码供参考。

function CopyRange() {
 var sss = SpreadsheetApp.openById('1zxyKx4GsBgD7hRzWT3TSvJto-R-rJoNwLu-0s5zFtko'); //replace with source ID
 var ss = sss.getSheetByName('DataTS1'); //replace with source Sheet tab name
 var range = ss.getRange('A2:AL17'); //assign the range you want to copy
 var data = range.getValues();

 var tss = SpreadsheetApp.openById('1DrCgrLIrybN4a-UqlBsGSJy5p8XBPWNR2ftviwTA5_Y'); //replace with destination ID
 var ts = tss.getSheetByName('All Data'); //replace with destination Sheet tab name

 ts.getRange(ts.getLastRow()+1, 1,16,38).setValues(data); //you will need to define the size of the copied data see getRange()

}

2 个答案:

答案 0 :(得分:1)

如果您想知道如何将数据从一张工作表复制到另一张属于不同电子表格的工作表,则可以执行以下操作:

function myFunction() {

  // source spreadsheets
  var sourceSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = sourceSpreadSheet.getSheets()[0];

  //destination spreadsheet
  var destinationSpreadSheet = SpreadsheetApp.openById('SPREADSHEET-ID');
  var destSheet = destinationSpreadSheet.getSheets()[0]; 

  // Get the contents of a cell in srcSheet
  var range = srcSheet.getRange(1, 1);
  var values = range.getValues();

  // place it in the last row if the destination cell
  var range = srcSheet.getRange(1, 1);
  var values = range.getValues();
  // get the last row
  var lastRow = destSheet.getLastRow();
  destSheet.getRange(lastRow + 1,1).setValue(values);

}

请注意,您可以复制范围而不是单个单元格。请查看以下链接以获取更多信息:

https://developers.google.com/apps-script/reference/spreadsheet/range

注意:我注意到您的来源和目标电子表格不是“格式相同”,但在您的问题中,您说它们是相同的

答案 1 :(得分:0)

干草真的感谢您的代码,在使用“ copyTo”卡住后,我会根据您的代码进行一些改进

function copyPaste() {
  var ss = SpreadsheetApp.openById("xxxx");
  var source = ss.getSheetByName("sheet1");
  var rangeSource = source.getDataRange();
  var data = rangeSource.getValues();
  var lr = rangeSource.getLastRow();
  var lc = rangeSource.getLastColumn();
  Logger.log(data);


  var sss = SpreadsheetApp.openById("xxxxxx");
  var target = sss.getSheetByName("sheet2")
  target.getRange(target.getLastRow()+1,1,lr,lc).setValues(data);
  }