2016-08-24 2 views
0

Ich weiß, dass dies schon einmal gemacht wurde, aber ich kämpfe um meine Arbeit, ich möchte alle Daten vom Blatt 'Templates' nach 'History' kopieren Blatt.Kopiere Werte von 1 Blatt und setze Werte in die letzte Zeile eines anderen Blattes

Ich möchte die Werte in einer neuen Zeile am Ende des Verlaufsblattes senden.

Hier ist mein Arbeitscode, ich muss nur ändern, wo die Werte festgelegt sind.

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

Antwort

0

Sie verwenden die getDataRange() und getValues() Methoden, wird dies die entsprechenden Werte zurück, in dem Daten in einem zweidimensionalen Array vorhanden ist, so dass, wenn Sie die Werte in das neue Blatt mit setValues() kopieren müssen Sie berücksichtigen die Abmessungen der abgerufenen Daten, so dass sie übereinstimmen, müssen Sie:

  1. die letzte verfügbare Zeile der Geschichte Blatt Setzen Sie sich mit getLastRow()
  2. Holen Sie sich das „Höhe“ des DataCopied Array (Anzahl der Zeilen) wi DataCopied.length
  3. Erhalten Sie die "Breite" der DataCopied Array (Anzahl der Spalten) DataCopied[0].length.
  4. Den Bereich dieser Abmessungen mit getRange(row, column, numRows, numColumns) abrufen.
  5. Legen Sie die Werte des DataCopied mit setValues()

Ihr Code sollte wie folgt aussehen:

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

} 
Verwandte Themen