簡體   English   中英

從1張紙中復制值並將值設置到另一張紙的最后一行

[英]Copy values from 1 sheet and set values to last row of another sheet

我知道以前已經做過,但是我正在努力使我的工作正常,我想將所有數據從表“模板”復制到“歷史”表。

我想將值發送到歷史記錄表底部的新行中。

這是我的工作代碼,我只需要更改設置值的位置。

var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
var sheetHistory = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('History');

var getRange = sheetTemplate.getDataRange();
var DataCopied = SRange.getValues();

sheetHistory.getRange("a2:F7").setValues(DataCopied);

您正在使用getDataRange()getValues()方法,這將返回二維數組中存在數據的相應值,因此當您使用setValues()將值復制到新工作表時,需要考慮到檢索到的數據的大小以便它們匹配,您需要:

  1. 使用getLastRow()獲取歷史記錄表的最后一個可用行
  2. 獲得了“高度” DataCopied陣列(行數)與DataCopied.length
  3. 獲取DataCopied數組的“寬度”(列數) DataCopied[0].length
  4. 使用getRange(row,column,numRows,numColumns)獲得該尺寸范圍。
  5. 使用setValues()設置DataCopied的值

您的代碼應如下所示:

function myFunction(){
  var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
  var sheetHistory = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('History');

  var getRange = sheetTemplate.getDataRange();
  var DataCopied = getRange.getValues();

  // I defined the variables for better understanding      
  var startRow = sheetHistory.getLastRow()+1; // +1 because remember that while a range index starts at 1, 1, the JavaScript array will be indexed from [0][0].
  var startColumn = 1;
  var numRows = DataCopied.length;
  var numColumns = DataCopied[0].length;
  sheetHistory.getRange(startRow, startColumn, numRows, numColumns).setValues(DataCopied);

}

暫無
暫無

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

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