2016-08-24 9 views
0

これは前に行われたことがわかっていますが、私は仕事が苦労しています。シート 'Templates'から 'History'シート。1枚の値を別のシートの最後の行にコピーする

履歴シートの一番下に新しい行の値を送信したいとします。

ここに私の作業コードですが、値の設定場所を変更するだけです。

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

答えて

0

あなたがgetDataRange()getValues()メソッドを使用している、これはデータを2次元配列中に存在する対応する値を返しますので、あなたはsetValues()で新しいシートに値をコピーするときにする必要があり行の

  1. getLastRow()
  2. と歴史シートの使用可能な最後の行はDataCopiedアレイの「高さ」をゲット(番号:それらが一致するので、アカウントに取得したデータの大きさを取る、あなたがする必要があります)wi th 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); 

} 
関連する問題