繁体   English   中英

从工作表 A 复制粘贴到工作表 B 的最后一行谷歌应用程序脚本

[英]Copy fro Sheet A to paste in Sheet B's last row google app script

我只是想学习 javascript 和谷歌应用脚本 2-3 周。

我正在从工作表 A 复制从 11 到 200 的整个范围。然后我需要将复制的数据粘贴到工作表 B 的最后一行。

我在这里做了一个有错误的代码。

   function CopyandPasteToB() {
  var app = SpreadsheetApp;
  var spreadsheet = SpreadsheetApp.getActive();
  var ss = app.getActiveSpreadsheet();
  var mysheet = ss.getSheetByName('B')
  
  //copy data from origin sheet
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('A'), true);
  spreadsheet.getRange('11:100').activate();
  
  // Last non-empty row
  var rlast = mysheet.getLastRow();
  Logger.log("Last row = " + rlast);
 
  // Insert into last row in OP
  mysheet.insertRows(rlast+1);
  var r = rlast+1;
  spreadsheet.getRange('\'WP1\'!11:100').copyTo(mysheet.getLastRow() +1);
};

我收到异常错误:参数(数字)与 SpreadsheetApp.Range.copyTo 的方法签名不匹配。

除了我得到的错误之外,您认为我的代码可以改进吗?我是否在正确的方向上实现我的目标?

所以我想问一下我 go 如何工作?

非常感谢你。

  • 提供给copyTo(range)的参数应该是一个Range ,而不是一个数字。 这就是你的问题的原因。
  • 无需activate Sheets 和 Ranges 即可对其进行处理,因此您的代码可以得到简化。

代码片段:

function CopyandPasteToB() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var mysheet = ss.getSheetByName('B');
  var sourceSheet = ss.getSheetByName('A');
  var sourceRange = sourceSheet.getRange("11:100");
  var rlast = mysheet.getLastRow();
  if (rlast === mysheet.getMaxRows()) mysheet.insertRowsAfter(rlast, 1); // Avoid error if last row with content is last row of the sheet
  var destRange = mysheet.getRange(rlast + 1, 1);
  sourceRange.copyTo(destRange);
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM