In diesem kurzen Tutorial und zugleich Snippet zeige ich Euch wie Ihr eine DO WHILE Schleife erstellen könnt. Manche nennen solche Schleifen auch Loops. Mit der DO WHILE Schleife könnt Ihr einen Codebereich mehrfach durchlaufen. Der Unterschied zwischen einer WHILE und DO WHILE Schleife ist, dass der Code auf jeden Fall einmal durchlaufen wird, weil die Bedingung erst im nachhinein also am Ende geprüft wird. Bei jedem Durchlauf können sich die verschiedenen Variablen und Aufrufe (z.B. durch IF Abfragen) auch ändern wenn man das möchte. Das bedeutet dass der Code nicht nur einfach wiederholt werden muss, sondern auch gezielt verändert werden kann.
Wer jetzt das erste mal ein Google Tabellen Script programmiert sollte sich zuerst dieses Tutorial hier anschauen: Mein erstes Google Tabellen Script programmieren
Es gibt natürlich noch weitere Schleifen die Ihr benutzen könnt: Übersicht der SCHLEIFEN (Google Tabellen Script) Snippet
In diesem Beispiel zeige ich Euch wie Ihr eine einfache DO WHILE Schleife in Google Tabellen erstellen könnt. Hier werden durch diese Schleife in einer Spalte der Tabelle die Zahlen 1 bis 10 ausgegeben.
Ausgabe 1 bis 10 über ein Script
Zuerst greifen wir auf das aktive Tabellenblatt zu und weisen es der Variablen ss zu:
1 2 3 |
var ss= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); |
Vor der DO WHILE Schleife initialisiere ich eine Variable Namens i. Die Variable i bekommt den Wert 1 zugewiesen. Danach kommt auch schon die DO WHILE Schleife:
1 2 3 4 5 6 7 8 |
var i=1; do{ ss.getRange(i, 1).setValue(i); i++; }while(i<=10) |
Die Schleife wird ohne weitere Überprüfung durchlaufen und erst am Ende durch die WHILE Bedingung geprüft.
In den Klammern von WHILE wird von mir die Bedingung i<=10 angegeben.
Das bedeutet dass die DO WHILE Schleife nur weiterhin ausgeführt wird wenn der Wert von i kleiner oder gleich 10 ist. Da wir für i vorher schon eine 1 festgelegt haben wird die Schleife also zunächst weiterhin ausgeführt.
Die Schrittweite könnt Ihr natürlich anhand von Variablen festlegen. Wenn Ihr also mal vor habt in Zweierschritten zu arbeiten könnte der Code zum Beispiel folgendermaßen aussehen:
Wenn Ihr also die Formel so ändert:
1 2 3 4 5 6 7 8 |
var i=2; do{ ss.getRange(i, 1).setValue(i); i=i+2; } while(i<=10) |
Habt Ihr nachfolgendes Ergebnis:
Ausgabe 1 bis 10 im Zweierschritt durch ein Script
Die Zeile …
1 2 3 |
ss.getRange(i, 1).setValue(i); |
… greift auf das Tabellenblatt zu welches wir ja jetzt in der Variablen ss hinterlegt haben.
getRange gibt den Bereich an welchen wir jetzt beschreiben wollen. Der Erste Parameter von getRange gibt die Zeilennummer und der zweite Parameter die Spaltennummer an. Deshalb habe ich als zweiten Parameter eine 1 gewählt um die Einträge in Spalte 1 einzutragen.
Wenn Ihr falsche Parameter benutzen solltet, dann kann die Ausführung von Schleifen natürlich endlos weiter gehen. Das gute ist, dass das Programm dieses Script irgendwann stoppt wenn es zu einer Endlosschleife kommen sollte.
Ihr habt aber auch die Möglichkeit im Script Editor selbst die Ausführung abzubrechen. Dort erscheint im oberen Bereich eine Abbruchmöglichkeit.
Innerhalb des Scriptes selbst könnt Ihr natürlich auch steuern dass es zu einem Abbruch kommen soll. Dafür dient "break". Das würde dann in etwa so aussehen:
1 2 3 |
if(i>=5)break; |
Hier wird die Ausführung der Schleife abgebrochen wenn der Wert für i größer oder gleich 5 ist.
Die Zeilennummer wird jetzt durch die Variable i festgelegt. Zuerst ist i ja 1 weil wir das durch "var i=1" festgelegt haben. Also findet der erste Eintrag auch in Zeile 1 statt.
Mit setValue können wir in den angegebenen Bereich der Tabelle einen Wert eintragen. Hier benutze ich wieder die Variable i die beim ersten Durchlauf auch als Wert eine 1 hat. Also wird in der ersten Zeile auch der Wert 1 eingetragen. Anschließend wird mit i++ der Wert von i um eins erhöht und beim nächsten Durchlauf hat die Variable i den Wert 2.
Dadurch wird dann auch die zweite Zeile mit dem Wert 2 beschrieben. Die Schleife wird beendet sobald die Bedingung i<=10 nicht mehr erfüllt ist. Sobald also i größer als 10 ist wird die Schleife verlassen.
Aufgerufen wird die Funktion mit doWhileSchleife . Dieses Script könnt Ihr über Buttons (Zeichnungen oder Bilder) mit diesem Namen zuweisen.
Vorab ein Video welches Euch zeigt wie man ein einfaches Script programmieren kann und wie Ihr den Scripteditor aufrufen könnt:
Mein erstes Script programmieren mit GOOGLE Tabellen
Benutzt zum Üben eine separate Tabelle für Testzwecke oder eine Kopie des Originals damit Euch keine Daten verloren gehen.
1 2 3 4 5 6 7 8 9 10 11 |
function doWhileSchleife(){ var ss= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var i=1; do{ ss.getRange(i, 1).setValue(i); i++; } while(i<=10) } |
Die Benutzung der Scripte erfolgt natürlich wie immer auf eigene Gefahr.
Euch gefällt das Script und Ihr wollt Euch gerne bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉
Dieses Tutorial ist Teil einer Serie die als eine Art Datenbank für kleinere Snippets dient. Damit habt Ihr die Möglichkeit für Eure Projekte einen Teil des Codes hier direkt zu kopieren und wie in Modulbauweise das ganze anzuwenden.
Die Liste aller Snippets findet Ihr hier:
Google Tabellen Script Programmierung