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)"
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