2016-09-13 2 views
1

Ich möchte eine Schaltfläche in meinem Blatt erstellen, die 'benutzerdefinierte Objekte' von einem Blatt (Daily Lab Orders) in die letzte Zeile des. Kopiert (oder ausschneidet) fertiges Blatt (Fertigstellung 2016), sobald sie fertig sind. Ich möchte dann, dass es die Zeile löscht, die das 'benutzerdefinierte Element' enthält. Logischerweise dachte ich, ich würde die Zeile auswählen, auf die Schaltfläche klicken und dies für jedes "benutzerdefinierte Element", das fertig ist, immer wieder ausführen.Google Sheets/AppScript - Kopieren von Daten von einem Blatt in ein anderes

Der Fehler, den ich habe, ist, dass das Skript nur Zelle A1 kopiert. Es kopiert keine anderen Werte entlang der ersten Zeile und es wird nichts unter Zeile 1 kopiert. A1 ist eingefroren und verwendet die Funktion NOW(), um die Zeit ständig zu aktualisieren.

Unten ist mein Skript. Irgendwelche Hilfe, bitte? Vielen Dank. *

* Der Teil zum Löschen der Zeilen wurde noch nicht geschrieben.

function myFunction() { 

var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); //replace with source ID 

var source = ss.getSheetByName('Daily Lab Orders 2016'); //replace with source Sheet tab name 
var SRange = source.getActiveRange(); //assign the range you want to copy 
var SData = SRange.getValues(); 

var target = ss.getSheetByName('Finished 2016'); //replace with destination Sheet tab name 
var last_row = target.getLastRow(); 
var target_range = target.getRange("A"+(last_row+1)+":G"+(last_row+1)) 
target.getRange(target.getLastRow()+1, 1, SData.length, SData[0].length).setValues(SData); 


} 
+0

Es ist nicht klar, wie Sie myFunction auslösen. Wenn Sie dies außerhalb der Tabelle auslösen, gibt getActiveRange() möglicherweise nicht den Bereich zurück, den Sie in einer bestimmten Kopie des Blattes ausgewählt haben. Kannst du erklären, wie du myFunction() anrufst? –

Antwort

0

wenn Sie verwenden:
var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8');
Sie sind offen eine Tabelle ing, wenn Sie die activeRange ist immer A1 eine Tabelle öffnen.
Also, Ihr Skript verhält sich normal.
Wenn die Funktion in der Tabelle und zum Beispiel geschrieben, wenn Sie es von einem menu button Auslösung werden dann könnten Sie die openById mit getActive ändern:

var ss = SpreadsheetApp.getActive(); 
var source = ss.getActiveSheet(); 
var SRange = source.getActiveRange(); 

Hier activeRange die Benutzerauswahl widerspiegeln, wenn Sie alle abzurufen bevorzugen das Blatt Inhalt anschließend sollten Sie ändern:

ganze Blatt Inhalt
var ss = SpreadsheetApp.openById('15yEY5ZX1HyOQFn-BkMXvksivADF3-8g9TnsIEI8aaL8'); //replace with source ID 
var source = ss.getSheetByName('Daily Lab Orders 2016'); //replace with source Sheet tab name 
var SRange = source.getDataRange(); 

getDataRange nehmen.

Verwandte Themen