2017-12-21 2 views
1

Ich bin auf der Suche nach einem Google Apps Skript, um einen Bereich von Zellen in einem Blatt auf ein anderes Blatt zu kopieren, dann wenn Die Werte für den ersten Bereich werden vom Benutzer geändert. Kopieren Sie den gleichen Bereich (neue Werte) in die nächste Reihe von der ersten. Hier ist, was ich bisher:Wie kopiert man einen Bereich von einem Blatt in einen Bereich in einem anderen Blatt, dann wiederhole das Kopieren in die nächste Zeile

function copyToDatasheet() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s1 = ss.getSheetByName('Mobile Form'); 
    var s2 = ss.getSheetByName('Data'); 

    s1.getRange('B2').copyTo(s2.getRange('P6'), {contentsOnly:true}) 
    s1.getRange('B4').copyTo(s2.getRange('Q6'), {contentsOnly:true}) 
    s1.getRange('B6').copyTo(s2.getRange('R6'), {contentsOnly:true}) 
    s1.getRange('B8').copyTo(s2.getRange('S6'), {contentsOnly:true}) 
    s1.getRange('B10').copyTo(s2.getRange('O6'), {contentsOnly:true}) 
} 

All dies tut, ist Kopie s1 reicht Bereiche s2 auf Startreihe 6, das ist, wie ich es anfangen will, aber auf dem nächsten Eintrag will ich es nach unten bewegen zu Reihe 7 und so weiter. s1-Bereiche werden zurückgesetzt und neue Werte eingegeben, kopiere sie in der nächsten Reihe auf s2, um sie beim nächsten Lauf dynamisch nach unten zu bewegen. Ich hoffe, das macht Sinn, ich habe nicht so viel Wissen über das Skript von Apps, um zu erklären, was einige Funktionen tun würden, wenn es möglich wäre. Danke für jede Hilfe, die jemand anbieten kann.

Antwort

0

This will erhalten den gleichen Datenbereich, wenn eine Bearbeitung für Sheet1 vorhanden ist. Dann werden alle diese Daten an Sheet2 angehängt.

function getMultipleValues(){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); 

    var range = sheet.getRange(2,1,4,2); //getRange(starting row, starting column, ending row, ending column) 
    var data = range.getValues(); 
    putMultipleValues(data) 
} 

function putMultipleValues(data){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet2'); 
    data.forEach(function(i){ 
    SpreadsheetApp.flush(); 
    sheet.appendRow(i) 
    }) 
} 

Vergessen Sie nicht, die Trigger zu setzen. Im Menü => Bearbeiten => Aktuelle Projektauslöser. enter image description here

Verwandte Themen