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] 😉
Das könnte Dich auch interessieren
- Aktive Zeile in andere Tabelle kopieren (Google Tabellen Script) Snippet
- Aktive Zelle auslesen mit einem Google Tabellen Script
- Daten mit Script an den Listenanfang verschieben (Google Tabellen Script)
- Eine Funktion in PHP mit Parametern schreiben
- Einfaches Haushaltsbuch erstellen (Google Tabellen Spreadsheets)
- Einfügen oder löschen einzelner Zellen bei Google Tabellen
- Einfügen oder löschen von Zellbereichen (Google Tabellen Script)
- Google Tabellen Script autorisieren
- Hallo Welt in Google Tabellen Script
- Kalender mit Tabelle verbinden / verknüpfen (Google Tabellen Script)
- Kommentare in Deinem PHP Script
- Mein erstes Script programmieren mit Google Tabellen
- Tutorials über Google Tabellen Script - Programmierung
- Vergleichen der Werte von Zellen mit Google Tabellen Script
- Wertebereich einer Zelle mit Google Tabellen Script überprüfen
- Zeitstempel programmieren in Google Tabellen
- Zellenbereich verschieben mit moveTo (Google Tabellen Script) Snippet
- Übersichts-Liste der GOOGLE Tabellen Script Tutorials
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