簡體   English   中英

Google腳本-將動態范圍復制到新的電子表格

[英]Google Script - Copy dynamic range to new spreadsheet

如果可以的話,我會在第一個Google腳本中為您提供幫助。

我正在嘗試通過將日常處理日志復制並粘貼到日末日志電子表格的底部來歸檔它們。

問題在於每天處理的行數會有所不同,因此我無法設置要復制到目標電子表格的固定行數。

我只想從B7行復制到輸入最后一行

 function pasteprocessinglog() { var sss = SpreadsheetApp.getActiveSpreadsheet(); var ss = sss.getSheetByName('Sheet_name'); var range = ss.getRange('B7:J'); var data = range.getValues(); var tss = SpreadsheetApp.openById('URL'); var ts = tss.getSheetByName('Processing Log'); ts.getRange(ts.getLastRow() + 1, 2, ss.getMaxRows(), 9).setValues(data); } 

我當前收到錯誤:范圍高度不正確,原為6467,但應為6473

我猜這是因為它也試圖復制空行並且電子表格不夠長。

任何幫助,將不勝感激 :)

謝謝!

在使用ss.getRange('B7:J')。getValues()檢索的數據中,包含空單元格。 因此,檢索到的數據的長度大於真實數據的長度。 6467和6473分別表示數據數組的長度和getMaxRows()中的值。

getMaxRows()檢索包括空單元格在內的最底部單元格的數量。 因此,在使用setValues()的情況下,可以使用setValues的數據數組的長度作為getRange的numRows( https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange( Integer,Integer,Integer,Integer) )。

腳本如下。

function pasteprocessinglog() {
  var sss = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sss.getSheetByName('Sheet_name');
  var firstrow = 7; // 7th row
  var range = ss.getRange(firstrow, 2, ss.getLastRow() - firstrow + 1, 9);
  var data = range.getValues();

  var tss = SpreadsheetApp.openById('URL');
  var ts = tss.getSheetByName('Processing Log');
  ts.getRange(ts.getLastRow() + 1, 2, data.length, 9).setValues(data);
}

如果我的理解有誤,對不起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM