Daten einer Zelle in anderes Tabellendokument kopieren mit Google Tabellen Script
Ich wurde gefragt ob es möglich ist den Zellinhalt von einem Tabellenblatt in ein anderes Dokument zu kopieren.
Hier sollte zum Beispiel der Inhalt von Zelle "A5" kopiert werden und in ein anderes Dokument in die gleiche Zelle kopiert werden. Der Eintrag von der Quelle sollte aber bestehen bleiben.
Nachfolgend also mein Lösungsvorschlag.
Das Script muss ĂŒber den Script-Editor in das Dokument kopiert werden welches die Quell-Tabelle enthĂ€lt, also die Tabelle von der kopiert werden soll. Wie das mit dem Script-Editor funktioniert habe ich in dem Video-Tutorial "Mein erstes Script programmieren" gezeigt. In dieser Tabelle muss eine Zeichnung eingefĂŒgt werden damit das Script darĂŒber aufgerufen werden kann. Die Zeichnung dient dann als Button zum AusfĂŒhren des Scripts. Der Name der Funktion nennt sich bei mir "nachExternKopieren". Ihr könnt das natĂŒrlich entsprechend umbenennen. Denkt aber daran dass der Name der Funktion fĂŒr den Button benötigt wird und genau ĂŒbereinstimmen muss (ohne die Klammern).
Das GOOGLE Script zum Kopieren von Daten einer Zelle in ein anderes Dokument:
function nachExternKopieren(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NAME-DER-QUELL-TABELLE"); SpreadsheetApp.openById("ID-ZU-DEINEM-ANDEREN-DOKUMENT").getSheetByName("NAME-DER-ZIEL-TABELLE").getRange("A5").setValue(sheet.getRange("A5").getValue()); }
 ErlÀuterung zum Script
Die 2 Zeile:
Hier steht nur das jetzt die Funktion "nachExternKopieren" beginnt. Die normalen Klammern ohne Inhalt zeigen das beim Aufruf der Funktion keine Parameter ĂŒbergeben werden brauchen. Die geschweifte Klammer zeigt das hier der Bereich der Funktion beginnt. Sie Endet in der vierten Zeile mit der schlieĂenden geschweiften Klammer.
Die 3 Zeile:
Hier wird eine Variable "sheet" deklariert. Es wird der Variablen das Tabellenblatt mit dem Namen "NAME-DER-QUELL-TABELLE" zugewiesen. Vorab ist es aber wichtig auf das Aktive Tabellendokument zuzugreifen. DafĂŒr dient der Aufruf der Methode "SpreadsheetApp.getActiveSpreadsheet()"
Die 4 Zeile:
Hier wird ĂŒber die ID des Tabellendokuments auf das Zieldokument zugegriffen. Diese ID befindet sich im Browser innerhalb des links und ist diese sehr lange kryptische Zeichenkette. Weiterhin wird auf das Tabellenblatt innerhalb des Dokuments mit dem Namen "NAME-DER-ZIEL-TABELLE" zugegriffen. Die "getRange" Befehle verweisen auf die jeweilige Zelle die entweder ausgelesen oder beschrieben werden soll. Mit "getValue" wird die Zelle ausgelesen und mit "setValue" wird der Wert gesetzt.
Die 5 Zeile:
Die schlieĂende geschweifte Klammer nicht vergessen die Kennzeichnet dass hier der Bereich von der Funktion zu Ende ist.
Wer die Zelle von der Quell-Tabelle löschen möchte kann das mit setValue("") erledigen.
Sonstiges
Schaut auch mal nach meiner kleinen Google Tabellen Script Snippets – Sammlung. Ich habe hier einige kleine Scripte geschrieben die Ihr vielleicht fĂŒr Eurer Projekt nutzen könnt.
Euch gefÀllt die Datei und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] đ
13 Comments
Hallo Chris
Ich versuche grade das ich einen ganzen Bereich aus der Tabelle in ein anderes Dokument kopiere und das es dort in nÀchste freien Zeile Kopiert wird
Das mit dem Bereich habe ich hin bekommen
Neu.getRange("B5:BC5").setValues(Quelle.getRange("B5:BC5").getValues());
Ich weiĂ nur nicht wie ich .getLastRow()+1,2), {contentsOnly:true} richtig einsetzte
LG Flo
Hi Flo, ich habe das ein bisschen angepasst damit Du siehst wie man das machen könnte. Ich ĂŒbertrage sozusagen einen Bereich von 4 mal 4 Zellen (A4:D7) in ein anderes Tabellenblatt:
function nachExternKopieren(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1");
var sheet2=SpreadsheetApp.openById("ID-ZU-DEINEM-ANDEREN-DOKUMENT").getSheetByName("Tabellenblatt1");
sheet2.getRange(sheet2.getLastRow()+1,1,4,4).setValues(sheet.getRange("A4:D7").getValues());
}
sheet2.getLastRow()+1 gibt die nĂ€chste leere Zeile an. Ohne die +1 wĂŒrdest Du genau in die letzte Zeile schreiben.
Die zweite 1 gibt die Spaltennummer an. Also Spalte A.
Die 4 er geben genau den Bereich an, also von A4 bis D7 sind es 4 Zeilen und auch vier Spalten.
Viele GrĂŒĂe
Chris
Funktioniert Super Danke Schön đ
Super. Freut mich zu hören đ
Hallo
Ich habe da mal eine frage.
Ich wollte denn bereich R12,R13 und R14 gern Kopieren in ein neues Blatt.
Dies sollte aber immer eine neue Spalte nehmen und nicht das alte ĂŒberschreiben.
Ich danke dir
Hi Patrik,
Du kannst Zellen markieren und mit STRG+C kopieren. AnschlieĂend gehst Du auf das andere Tabellen-Blatt oder sogar Tabellen-Dokument und fĂŒgst das mit STRG+V ein.
Du kannst aber auch ĂŒber "Bearbeiten" – > "Inhalte einfĂŒgen" – > "Transponiert einfĂŒgen" die Daten sozusagen gedreht einfĂŒgen.
Viele GrĂŒĂe
Chris
Danke =)
Aber dies sollte immer passieren wenn in dieser Zeile was geÀndert wird.
Oder leichter gesagt.
Er soll Die Name zÀhlen wo xy Sachen eingetagen haben. Aller Dings sind die Name alle 4 Stunden anderster in diesem Bereich.
https://docs.google.com/spreadsheets/d/186dgAyv7L56waxSGIqD72FYQqUlV6zQTuu09J7KW9-U/edit?usp=sharing
Hier mal ein bespiel.
Wie kann man dies am besten umsetzten.
Da wirst Du vermutlich um die Programmierung nicht herum kommen. Du mĂŒsstest dann ĂŒber onEdit eine Funktion aufrufen die EintrĂ€ge kopiert und in eine neue Tabelle schreibt sobald etwas geĂ€ndert wird. AnschlieĂend kannst Du die EintrĂ€ge ja auf verschiedene Weise zusammen zĂ€hlen oder EintrĂ€ge Summieren. Mit Summewenns oder ZĂ€hlenwenns kannst Du Dir dann eine kleine Statistik der EintrĂ€ge abrufen. Wird aber ziemlich aufwĂ€ndig weil Du Dich erst in die Programmierung einarbeiten mĂŒsstest.
Auch fĂŒr den zweiten Bereich unten wirst Du das ĂŒber die Programmierung machen mĂŒssen. Hier kannst Du einen zeitlichen Trigger setzen der am Sonntag die Funktion aufruft. Die Funktion wĂŒrde dann alles zurĂŒcksetzen.
Ein guter Einstieg fĂŒr die Programmierung findest Du hier:
https://toptorials.com/mein-erstes-script-programmieren-mit-google-tabellen/
Ich danke dir dann setzte ich mich da mal dran und versuche mein glĂŒck
Wenn man die Zeit hat, dann macht das auch richtig Laune đ Ich wĂŒrde auch gerne noch sehr viel mehr programmieren aber die Zeit ist durch mehrere Projekte extrem begrenzt.
Viel SpaĂ beim Programmieren đ
Hallo Chris, ist es auch möglich das script in dem Ziel Dokument zu halten? Wenn ja, wie? đ
Danke fĂŒr die Hilfe
Hast Du das denn schon mal im Ziel – Dokument getestet?
Hallo Chris,
Ich will Daten von einer zur anderen Tabelle kopieren. Dies funktioniert dank deiner Anleitung sehr gut. Nun habe ich die Herausforderung, dass ich nicht alle Daten importieren will, sondern nur alle Zeilen mit einem Kriterium sprich Filter.
Wie kann ich einen Filter in den Script einbauen, so dass nur die gewĂŒnschten Zeilen kopiert werden?
Freue mich auf deine Antwort.
Beste GrĂŒsse,
Simon