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

Phi*_*bey 5 google-sheets google-apps-script

我已经查看了之前能找到的所有问题,但我似乎永远无法使不同的示例适合我想要做的事情。

我有由不同用户填写的表格。我希望在 All!H35 的下拉列表中选择“是”后,将“数据”工作表上的数据复制到格式相同的单独电子表格中。每个团队都会有一个每天填写的表格(“源”),理想情况下,他们都将数据复制到同一主电子表格(“目标”)中的下一个空行,从而创建所有数据的运行列表工作。

[来源][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();
Run Code Online (Sandbox Code Playgroud)

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

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()

}
Run Code Online (Sandbox Code Playgroud)

Saa*_*out 4

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

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