簡體   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-2024 STACKOOM.COM