Daten mit Script an den Listenanfang verschieben (Google Tabellen)
In diesem Tutorial zeige ich Euch wie Ihr ein Script in den Google Tabellen erstellen könnt welches Daten von einem Eingabebereich in eine Liste verschieben kann. Die Daten werden aber nicht einfach nur hinten an gehangen wie in diesem Video – Tutorial Mein erstes Script programmieren mit Google Tabellen, sondern erscheinen nachher in der ersten Zeile der vielleicht schon vorhandenen Liste.
Im Grunde genommen handelt es sich um ein sehr simples Script welches eine Zeile einfügt und damit die Einträge der Liste nach unten verschiebt. Anschließend werden die gerade neu erstellten Daten einfach in die entstandene Lücke verschoben. Dadurch ist auch gleich wieder der Eingabebereich leer und kann sofort neu befüllt werden.
Das Script könnt Ihr natürlich wie immer Euren eigenen Bedürfnissen entsprechend anpassen.
In diesem Beispiel habe ich die Funktion MyFunction benutzt, was ich üblicherweise nicht mache. Es wäre also von Vorteil den Funktionsnamen zu ändern und dann anschließend auch den erstellten Button entsprechend auf die neue Funktion verweisen zu lassen.
Im unteren Bereich könnt Ihr ein Video – Tutorial sehen welches Euch zeigt wie Ihr dieses Script in Eure Tabelle integrieren könnt. Hier zeige ich Euch auch wie Ihr schnell einen Button erzeugen könnt mit dem das Script aufgerufen wird. Achtet aber darauf, dass ihr den Button nur noch mit der rechten Maustaste bearbeiten könnt, denn mit der linken Maustaste wird die Funktion des Scriptes direkt aufgerufen, nachdem man einen Funktionsnamen zugewiesen hat.
Hier das Script: Daten an den Listenanfang verschieben
function myFunction() { // Zuweisung des aktiven Tabellendokuments an die Variable ss var ss = SpreadsheetApp.getActiveSpreadsheet(); // Zuweisung des Tabellenblatts mit dem Namen Test an die Variable sheet var sheet = ss.getSheetByName("Test") // Zuweisung des Quell - Bereichs an die Variable source var source = sheet.getRange("A3:H3"); // Einfügen einer neuen Zeile nach der Zeile 4 sheet.insertRowAfter(4); // Zuweisung des Zielbereiches Bereichs an die Variable destination var destination =sheet.getRange("A5:H5"); // Die Quelle wird mit der Funktion moveTo an den Zielbereich verschoben. source.moveTo(destination); }
Die Benutzung des Scripts erfolgt wie immer auf eigene Gefahr.
Euch gefällt die Datei und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉
Hier das Video – Tutorial: "Datensatz verschieben und der Liste voranstellen (Google Tabellen Script)"
Das könnte Dich auch interessieren
- Aktive Zelle auslesen mit einem Google Tabellen Script
- Daten anderer Tabellen kopieren (Google Tabellen Script)
- Einfügen oder löschen einzelner Zellen bei Google Tabellen
- Einfügen oder löschen von Zellbereichen (Google Tabellen Script)
- Hallo Welt in Google Tabellen Script
- Kalender mit Tabelle verbinden / verknüpfen (Google Tabellen Script)
- 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
- Übersichts-Liste der GOOGLE Tabellen Script Tutorials
10 Comments
Hallo Chris
Muss echt mal sagen , das ich genau so was gesucht habe !
aber ich habe jetzt ein Problem !!!
Habe in den der Zeil die nach unten Kopiert wird bei mir ist das ( B 4 : G 4) ,Bedingte Formatierung und eine Drop-down -Liste.
wenn ich jetzt auf dem Butten Drücke ,Löscht der nicht nur was ich eingegeben habe ,sondern auch die .
Drop-down -Liste.und die Bedingte Formatierung.
Habe ich was falsch gemacht ?????
Ich hoffe du kannst mir dabei helfen und hast eine lösung !!!
MFG Stefan
Hi Stefan, so wie es aussieht musst Du vermutlich nur
sheet.insertRowAfter(4);
ändern und eine höhere Zahl eingeben. Nach Deinen Werten wäre es dann eigentlich
sheet.insertRowAfter(5);
und für die nachfolgende Zeile musst Du dann ebenfalls eine höhere Zahl eingeben.
Also
var destination =sheet.getRange("A6:H6");
Wenn es nicht klappt sag ruhig bescheid.
Viele Grüße
Chris
Hallo Chris,
ich habe mir schon etliche Tutorials angesehen und nachgestellt.
Ich ein Tutorial oder ein Script mit ich eine Excel Userform nachbilden kann.
Oder ist das mit Google Sheets nicht möglich?
Habe jetzt schon vielen Dank.
gruß Gerhard
Hallo Gerhard,
ich habe mich mit dem Thema noch nicht so ausgiebig beschäftigt, nur wie man ein Menü erstellen kann und wie man damit auf Funktionen zugreifen kann. Was ich mir aber in der Richtung mal anschauen würde wäre vielleicht "HTML Service". Aber was damit alles möglich ist konnte ich bisher noch nicht testen. Ich vermute das man damit komplett eigene Web Formulare erstellen könnte und aus den Tabellen entsprechende Infos beziehen kann. Inwieweit man allerdings dieses HTML Konstrukt dann für seine Zwecke anpassen kann weiß ich noch nicht.
https://developers.google.com/apps-script/guides/html/
Ich habe gerade auch noch mal schnell versucht ein paar Infos oder Beispiele zu finden aber zufriedenstellend war das nicht.
Ich habe gerade noch was gefunden was schon mal so die Richtung zeigt:
http://www.javascript-spreadsheet-programming.com/2013/05/html-service-basics-write-form-data-to.html
Viele Grüße
Chris
Hi Chris,
ich habe all deine Videos gesehen und kann trotz dessen ein Problem einfach nicht lösen.
Für dich sicherlich eine einfache Aufgabe.
Ich würde gern bei Änderung eines Zellwertes, dass in die benachbarte Zelle ein Zeitstempel gesetzt wird.
Mir fehlt die Info, wie ich die jeweilige Nachbarzelle mit einem Wert belegen kann.
Kannst du mir helfen?
Viele Grüße, Tino.
Hallo Tino, was hältst Du denn von dieser Möglichkeit:
Zeitstempel mit Benutzer als Notiz
Hier wird eine Notiz direkt in die Zelle eingetragen oder auch daneben wenn Du das im Script entsprechend änderst 😉
Viele Grüße
Chris
Hallo Chris,
dank dir, das klappt prima.
Einzige Frage wäre noch, wie ich die Funktion dann auf ein Tabellenblatt beschränken kann.
Denn somit löst die Funktion in gesamten Sheet aus.
Die Frage ist also, wie kann ich das Auslösen von onEdit auf ein bestimmtes Tabellenblatt beschränken?
Viele Grüße, Tino.
Mit onEdit übergibst Du einen Parameter der hinterher ausgelesen werden kann. In den meisten Fällen ist das ein e wenn der Aufruf onEdit(e) ist.
Hier fragst Du ab aus welcher Tabelle der Aufruf kommt. Sollte sowas sein wie getSheetName. Das vergleichst Du dann über eine IF Abfrage.
Hier habe ich ein Beispiel gefunden was Du Dir mal anschauen kannst:
onEdit mit Überprüfung des Tabellennamens
Viele Grüße
Chris
Hallo Chris.
Erst einmal vielen lieben Dank für dein Tutorial.
Hat mir bis dato sehr gut weiter helfen können.
Nur habe ich nun 2 Fragen:
Zum einen habe ich von A2 bis I2 8 Eingabefelder, die ich füllen kann und deren Inhalt dann verschoben wird.
Nun befindet sich bei mir in A2 ein Drop Down Menü mit einer Liste von verschiedenen Mitarbeitern.
Mein Plan wäre es nun gewesen, dass ich z.B, Mitarbeiter 1 in A2 aus dem Drop Down Menü wähle, seine Werte eintrage und dann durch die Funktion die Werte kopiere. Dieses klappt auch soweit gut, allerdings kopiert er dann das komplette DropDown Menü aus der A2 raus und ich muss dieses händisch wieder nach A2 kopieren. Kann ich irgenwie einstellen, dass er den gewählten Namen wohl kopiert, allerdings das DropDown Menü in der Zelle A2 stehen lässt?
Als zweites würde ich sehr gerne für jeden Mitarbeiter ein eigenes Tabellenblatt einrichten, wo er mir dann die in der Tabelle eingetragenen Werte hin kopiert. Also nicht wie in deinem Beispiel von Zeile 3 in Zeite 5 sondern wenn ich im Drop Down Menü Max Müller auswähle, sollen die eingetragenen Werte in die Tabelle von Herrn Müller übersendet werden.
Wie kann ich dieses bitte bewerkstelligen?
Vorab bedanke ich mich vielmals für die Hilfe.
Hallo Chris.
Das Script ist super und funktioniert spitze. Ich würde aber die Eingabe gerne in ein anderes Datenblatt verschieben.
Ich habe die Zeile angepasst: var destination =sheet.getRange("Stunden!A2:H2");
Aber es klappt nicht, es wird immer noch nach unten verschoben. Kannst Du mir sagen, wo mein Fehler ist. Danke.
Gruß Marcus