Beispiel einer doppelten FOR Schleife
In diesem Beitrag zeige ich Euch ein Beispiel einer doppelten FOR Schleife einen Stundenplan auslese und die Daten daneben als Liste wieder ausgebe. 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 falls Ihr Euch dafür interessiert: Übersicht der SCHLEIFEN (Google Tabellen Script) Snippet
Dieser Beitrag entstand aufgrund einer netten Anfrage. Hier war die Aufgabenstellung dass die Daten später vom typischen Stundenplan in den Google Kalender übertragen werden können. Dies ist sozusagen eine Zwischenlösung die aber entsprechend angepasst werden könnte. Der Stundenplan wurde mir als Vorlage zur Verfügung gestellt. Ich habe ihn nur um eine Leerzeile und in der Formatierung ein wenig geändert.
Der Kalender hat den folgenden Aufbau.
Zu beachten ist, das das Datum in der zweiten Spalte steht und die Anfangs und Endzeiten des Stundenplans in Zeile 2 und 3 stehen.
Das wurde in dem Script alles berücksichtigt und kann noch ein wenig angepasst werden.
Die unformatierte Ausgabe sieht folgendermaßen aus:
Hier müsst Ihr nur noch die Spalten entsprechen formatieren damit alles ein wenig chick aussieht. Also einfach die Spalte vom Datum auswählen und dann auf FORMAT – > ZAHL – > DATUM gehen und schon passt es. Man könnte das zwar auch direkt im Script formatieren aber ich denke dann würde sich die Ausführungszeit noch einmal erhöhen. Nach ein bisschen Formatierung sieht es dann folgendermaßen aus.
Das Problem:
Bei Abfragen die länger dauern, kann es zu einem Abbruch kommen, da die Scripte von Google-Tabellen eine begrenzte Ausführungszeit haben. Sollte das Script in dieser Zeit nicht ausgeführt worden sein bricht das Script mit der Fehlermeldung "Maximale Ausführungszeit überschritten" ab.
Hier könnte man eventuell das ganze in kleinere Häppchen aufteilen. Bei mir brach das Script nach ca. 250 Einträgen ab. Bei diesen Stundenplan lief das vom 1. Januar bis fast Ende März durch. Wenn jemand Ideen hat die Ausführungszeit zu erhöhen (ohne die Anzahl der Einträge zu verringern, was natürlich auch geht), kann das gerne in die Kommentare schreiben. Ich habe noch nicht probiert ob z.B. eine While-Schleife schneller durchlaufen wird.
Die Lösung:
Man könnte den ganzen Bereich in ein Array-Objekt packen und dann dieses Array durchlaufen um Werte zu vergleichen, zu filtern oder sonstiges. Ein Beispiel wie man solch ein Array durchlaufen kann findet Ihr hier: https://developers.google.com/apps-script/articles/removing_duplicates
Die Übungs-Vorlage für den Stundenplan könnt Ihr Euch hier herunterladen:
Diese Datei müsst Ihr nur entzippen und könnt es dann über Datei – Importieren in GOOGLE Tabellen importieren.
DownloadEuch gefällt die Datei und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉
Das Script Beispiel einer doppelten FOR Schleife zum kopieren.
function kalenderCSV(){ var tabellenBlatt=SpreadsheetApp.getActiveSpreadsheet(); // Anzahl der Zeilen die ausgelesen werden sollen. var startZeile=5; var stopZeile=tabellenBlatt.getLastRow(); //var stopZeile=10; // zum Testen nur 10 Zeilen // Spaltenbereich der durchsucht werden soll var startSpalte=3; var stopSpalte=17; // Die Zeile in der sich die Anfangszeit befindet var anfangsZeitZeile=2; // Die Zeile in der sich die Endzeit befindet var endZeitZeile=3; // Die Spalte in der sich das Datum befindet var datumSpalte=2; // Abstand zwischen der Tabelle und der Ausgabe der Liste var abstandTabelleListe=2 // Titelzeile var titelZeile=startZeile-1; // Bereich vor der Ausgabe löschen tabellenBlatt.getActiveSheet().getRange(startZeile,(stopSpalte+abstandTabelleListe),(stopSpalte*stopZeile),6).clear(); // Eintragen der Überschriften tabellenBlatt.getRange("R"+(titelZeile)+"C"+(stopSpalte+abstandTabelleListe)).setValue("Eintrag-Nr.:"); tabellenBlatt.getRange("R"+(titelZeile)+"C"+(stopSpalte+abstandTabelleListe+1)).setValue("Zeile:"); tabellenBlatt.getRange("R"+(titelZeile)+"C"+(stopSpalte+abstandTabelleListe+2)).setValue("Datum"); tabellenBlatt.getRange("R"+(titelZeile)+"C"+(stopSpalte+abstandTabelleListe+3)).setValue("Uhrzeit-Start"); tabellenBlatt.getRange("R"+(titelZeile)+"C"+(stopSpalte+abstandTabelleListe+4)).setValue("Uhrzeit-Ende"); tabellenBlatt.getRange("R"+(titelZeile)+"C"+(stopSpalte+abstandTabelleListe+5)).setValue("Zellen-Eintrag"); var counter=0; for(var zeile=startZeile; zeile<=stopZeile; zeile++){ for(var spalte=startSpalte; spalte<=stopSpalte; spalte++){ var zellenEintrag=tabellenBlatt.getRange("R"+zeile+"C"+spalte).getValue(); if(zellenEintrag=="") continue; var datumVomEintrag=tabellenBlatt.getRange("B"+zeile).getValue(); var anfagszeitVomEintrag=tabellenBlatt.getRange("R"+anfangsZeitZeile+"C"+spalte).getValue(); var endzeitVomEintrag=tabellenBlatt.getRange("R"+endZeitZeile+"C"+spalte).getValue(); tabellenBlatt.getRange("R"+(counter+startZeile)+"C"+(stopSpalte+abstandTabelleListe)).setValue(counter+1); tabellenBlatt.getRange("R"+(counter+startZeile)+"C"+(stopSpalte+abstandTabelleListe+1)).setValue(zeile); tabellenBlatt.getRange("R"+(counter+startZeile)+"C"+(stopSpalte+abstandTabelleListe+2)).setValue(datumVomEintrag); tabellenBlatt.getRange("R"+(counter+startZeile)+"C"+(stopSpalte+abstandTabelleListe+3)).setValue(anfagszeitVomEintrag); tabellenBlatt.getRange("R"+(counter+startZeile)+"C"+(stopSpalte+abstandTabelleListe+4)).setValue(endzeitVomEintrag); tabellenBlatt.getRange("R"+(counter+startZeile)+"C"+(stopSpalte+abstandTabelleListe+5)).setValue(zellenEintrag); counter++; } } }
Die Verwendung von diesem Script geschieht wie immer auf eigene Gefahr.
Euch gefällt die Datei und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉
Das könnte Dich auch interessieren
- Alle Termine vom Google Kalender in Tabelle anzeigen
- DO WHILE SCHLEIFE (Google Tabellen Script) Snippet
- Daten anderer Tabellen kopieren
- Einfaches Haushaltsbuch erstellen (Google Tabellen)
- Einfügen oder löschen von Zellbereichen bei Google Tabellen
- FOR EACH SCHLEIFE (Google Tabellen Script) Snippet
- FOR SCHLEIFE (Google Tabellen Script) Snippet
- Google Tabellen Script autorisieren
- IF / ELSE / ELSE IF Bedingungen (Google Script) Snippet
- Switch Case (Google Tabellen Script) Snippet
- Termin in den Kalender eintragen (Google Tabellen) Script
- Tutorials über Google Tabellen Script - Programmierung
- WHILE SCHLEIFE (Google Tabellen Script) Snippet
- Ziel und Fahrtroute in Google Maps anzeigen (Google Tabellen)
- Übersicht der SCHLEIFEN (Google Tabellen Script) Snippet
- Übersichts-Liste der GOOGLE Tabellen Script Tutorials