IF Bedingungen / ELSE IF / ELSE (Google Tabellen Script)

In diesem Tutorial und zugleich Snippet zeige ich Euch wie Ihr IF Bedingungen in der Google Tabellen Scriptprogrammierung erstellen könnt.
Solche IF und ELSE IF Blöcke könnt Ihr hintereinander aber auch verschachtelt anwenden. Damit wird dann ein Bereich Eures Scriptes so gesteuert dass nur Befehle ausgeführt werden die bestimmten Bedingungen entsprechen.

Wer jetzt das erste mal ein Google Tabellen Script programmiert sollte sich zuerst dieses Tutorial hier anschauen:
Mein erstes Google Tabellen Script programmieren



Wenn Ihr Euch auch für Schleifen oder sogenannte Loops interessiert dann schaut mal hier:
Übersicht der SCHLEIFEN (Google Tabellen Script) Snippet

Beschreibung:

In diesem Beispiel zeige ich Euch wie Ihr die IF Abfage so aufbauen könnt, dass Ihr in Zelle "A1" eine Zahl oder Text eingeben könnt und als Ausgabe in Zelle C1 angezeigt wird welcher IF oder ELSE Block gerade ausgeführt wird.

IF Bedingungen / IF ELSE Abfragen in der Google Script Programmierung

IF Bedingungen (1: Deine Eingabe // 2: Das Ergebnis)

Wir fangen erst einmal mit einer ganz einfachen Variante an.

Zugriff auf das aktive Tabellenblatt

In den Beispielen greifen wir zuerst auf das aktive Tabellenblatt zu und weisen es der Variablen ss zu:

Anschließend werden ein paar Variablen deklariert.

Hier könnt Ihr für abfrageZelle und ausgabeZelle die Einträge ändern wenn Ihr wollt.
abfrageZelle: Hier könnt Ihr Eure Eingaben machen. In den Beispielen benutze ich die Zelle "A1" die ausgelesen wird.
ausgabeZelle: Hier könnt Ihr entscheiden wo die Ausgabe stattfinden soll. Ich benutze hier "C1" um das Ergebnis auszugeben.

Mit ss.getRange(abfrageZelle).getValue() geben wir den Bereich an wo wir den Wert dann auslesen möchten. getRange ist für den Bereich zuständig und getValue liest den Wert ein.

Einfache IF Bedingungen:

Der Aufbau einer einfachen IF Abfrage ist sehr einfach und sieht in etwa so aus.

Im unteren Bereich seht Ihr schon wie das ganze funktioniert. Hier steht nur ein if und in Klammern die Bedingung.

Wir haben ja vorher die Zelle A1 mit getValue() ausgelesen und der Variablen WertVonAbfrageZelle zugewiesen. Sollte jetzt in Zelle A1 eine 1 drin stehen dann wird der IF Block ausgeführt. Also alles was innerhalb der geschweiften Klammern steht gehört zu diesem Bereich. Sollte keine 1 in der Zelle A1 stehen wird der gesamte Block übersprungen.
Mit …

… schreiben wir dann über setValue den gewünschten Text "IF Block 1 wird ausgeführt" in die Zelle C1. Wir hatten ja auch hier schon die Zelle C1 der Variablen ausgabeZelle zugewiesen.

Warum == und nicht =

Ein Vergleich in Eurer Bedingung wird mit zwei Gleichheitszeichen durchgeführt. Wenn Ihr nur ein Gleichheitszeichen benutzen würdet wäre es wie am Anfang des Scriptes nichts weiter als eine Zuweisung. Ihr seht das sehr gut bei

Hier habt Ihr ja auch der Variablen abfrageZelle den Wert A1 zugewisen. Deshalb braucht man für einen Vergleich natürlich etwas anderes. Genau deshalb benutzt mal zwei Gleichheitszeichen ==.

IF Bedingungen mit ELSE Block

Jetzt gehen wir mal einen kleinen Schritt weiter und werden noch einen ELSE Block hinzufügen. Dieser ELSE Block wird immer dann ausgeführt wenn die Bedingung der IF Abfrage nicht übereinstimmt. Das heißt, entweder wird der IF Block ausgeführt oder der ELSE Block aber nie beide. Welcher von beiden ausgeführt wird ist nur abhängig davon ob die Bedingung erfüllt wurde oder nicht.

Wie Ihr seht habe ich hier nur die folgenden Zeilen der IF Abfrage direkt angehangen.

Wenn Ihr jetzt also eine 1 eingebt erhaltet Ihr wieder "IF Block 1 wird ausgeführt" und sobald Ihr etwas anderes in die Zelle schreibt erhaltet Ihr "IF Block 1 wird nicht ausgeführt sondern der ELSE Block".

Damit man aber nicht nur diese beiden Varianten hat kann man das ganze natürlich noch wesentlich umfangreicher aufbauen.

IF Bedingungen mit ELSE IF und ELSE Block

Ihr habt mit ELSE IF noch die Möglichkeit mehrere Abfragen zu generieren. Hierbei ist es so dass wieder nur ein einziger Block davon ausgeführt wird. Ich gebe Euch mal ein Beispiel und beschreibe anschließend wie das ganze funktioniert.

Bei dieser Variante ist es so, dass der erste IF Block ausgeführt wird sobald in Zelle A1 der Wert 1 steht. Sollte eine 2 in der Zelle stehen wird der erste ELSE IF Block ausgeführt. Bei 3 der zweite ELSE IF Block und wenn nicht davon zutrifft wird der ELSE Block ausgeführt.

Prioritäten bei der IF Abrage

Wenn Ihr die IF Abfrage genau so aufbaut ist es wichtig die Prioritäten einzuhalten. Hier wird der gesamte IF / ELSE IF und ELSE Block verlassen sobald die erste Bedingung erfüllt ist. Vor allem wenn Ihr nicht nur Gleichheitszeichen verwenden solltet sondern zum Beispiel "größer als" (>=) und "kleiner als"  ("<=") könnten eventuell mehrere Bedingungen zutreffen. Hier müsst Ihr dann genau überlegen welche am Wichtigsten sind. Die wichtigsten Bedingungen müssen dann natürlich weiter oben stehen.

Ihr könnt natürlich auch Eure IF Abfragen getrennt oder verschachtelt anwenden.

Verschachtelte IF Bedingung

Im nachfolgenden Beispiel ist die IF Bedingung etwas verschachtelt. Aber ich denke Ihr könnt das jetzt schon selbst sehr gut nachvollziehen.

Hier wird zuerst geprüft ob die Zahl größer oder gleich 10 ist. Sollte die Zahl größer oder gleich 10 sein wird der erste IF Block ausgeführt. Innerhalb dieses IF Blocks gibt es weitere IF und ELSE IF Bedingungen die geprüft werden. Sollte also die Zahl schon kleiner als 10 sein wird der gesamte Bereich vorher schon übersprungen und nur der letzte ELSE Block ausgeführt.

Innerhalb des ersten IF Blocks habe ich jetzt extra Bedingungen gewählt damit Ihr seht dass die Prioritäten wichtig sind. Würdet Ihr hier die Reihenfolge ändern kann es zu unerwünschten Ergebnissen führen.

Hätte ich beispielsweise innerhalb des ersten IF Blocks "WertVonAbfrageZelle<=10000" an oberste Stelle gesetzt würden die anderen IF Abfragen nie zum Zuge kommen.

Wenn Ihr viele Bedingungen prüfen müsst, dann schaue Euch auch mal die Möglichkeit von SWITCH CASE an:
Switch Case (Google Tabellen Script) Snippet

Text statt Zahlen als Bedingung

Möchtet Ihr als Bedingung statt Zahlen einfach mal Text benutzen müsst Ihr das nur in Anführungszeichen setzen. Das sieht dann in etwa so aus

Hier muss in Zelle "A1" das Wort Eins stehen damit der IF Block 1 ausgeführt wird. Also total easy.

So, dass soll es erst einmal gewesen sein. Ich denke das war bestimmt genug Stoff für so eine einfache IF Bedingung 😉

 

Hier noch 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

Achtung:

Benutzt zum Üben eine separate Tabelle für Testzwecke oder eine Kopie des Originals damit Euch keine Daten verloren gehen.

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] 😉

Dies ist Teil der Serie: "Google Tabellen Script Programmierung"

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



Das könnte Dich auch interessieren

11 Kommentare

  1. Heiko sagt:

    Hallo zusammen.

    Ich suche Hilfe zu einer Funktion. Ich hätte gerne einen Deadline-Counter, der ein in einer Zelle (beispielsweise C3) eingetragenes Datum ausliest, die Anzahl an Tagen die bis heute übrig sind oder überschritten sind in einer weiteren Zelle (beispielsweise D4) ausgibt. Wenn die Checkbox mit "erledigt" markiert ist, hätte ich gern, dass die Deadline-Zelle mit "-" gefüllt wird. Sollte in der Datumszelle kein gültiges Datum eingetragen sein, hätte ich gern, dass das Script die Zeile überspringt. Ich hätte gern, sofern möglich, eine Hilfe zur Lösung, damit ich die Scriptschritte verstehen kann.

    Danke im Voraus

    Heiko

  2. Bader sagt:

    Hallo Leute,

    könnt ihr mir vielleicht bitte erklären warum bei folgendem Skript die Fehlermeldung kommt dass eine Klammer fehlt ?

    if (activeSheet.getName() !== "Data Tracking list" && r.getColumn() !== 22 && r.rowStart !>= 3 && r.rowEnd !<= 5000 && r.getValue() !== 0) {

    return;
    }

    • Chris sagt:

      Leider hast Du hier nur einen Auszug von Deinem Script eingetragen also kann ich nur raten. Ich glaube Du könntest die geschweifte schließende Klammer nach dem Return vergessen haben. Nach der IF Anweisung hast Du eine öffnende geschweifte Klammer und nach der Return Anweisung auch eine schließende Klammer. Du brauchst aber am Ende der Funktion ebenfalls noch eine schließende Klammer. Wie gesagt, das ist ja nur ein Auszug deshalb kann man nicht viel sagen.
      Viele Grüße
      Chris

  3. Elias sagt:

    Hallo Zusammen,

    da ich leider absoluter Script-Laie bin, hoffe ich, dass einer von Euch erfahrenen Nutzern mir ggf. bei einer Problematik weiterhelfen kann.

    Sachverhalt:
    Ich habe über die Datenvalidierung mehrere Drop Down Elementlisten mit jeweils 4 Einträgen (Ja, Nein, N/A, ???) in mehreren Spalte erstellt und möchte nun über eine Funktion (If, else if und else) über ein Macro bzw. ggf. einen (Zeit-)Trigger die getätigen Drop Down Eintragungen für ALLE Elementlisten im Tabellenblatt unter einer ganz bestimmten Bedingung (Nein wird zu Ja) wieder zurücksetzen. Alle anderen Auswahlmöglichkeiten des Drop Down Menus sollen bestehen bleiben und leere Zellen im Spaltenbereich unberührt von Veränderungen bleiben.

    Aktuelles Problem:
    Mir ist es bisher nicht gelungen, über die var abfrageZelle MEHRERE Zellen bzw. Bereiche gleichzeitg anzusteuern und je nach Drop Down Eintragung eine entsprechende Ausgabe zu erhalten. Ich bekomme immer nur die erste Zelle (in dem Fall F1) als Ausgabewert. Die IF Else Funktion funktioniert aber soweit tadellos und macht bei entsprechender Änderung der Drop Down Eintragung auch genau was Sie soll – nur leider eben nicht für ALLE folgenden Elementlistenbereiche in der Spalte.

    Wahrscheinlich ist das Ganze weniger kompliziert als gedacht aber ich schaffe es aktuell trotz ettlicher Videos zu dem Thema und weiteren Recherchen einfach nicht eine adäquate Lösung zu finden und Chris oder andere können mir weiterhelfen. Vielen Dank im Vorraus!

    Liebe Grüße
    Elias

    Hier noch das aktuelle Script:

    function DropDownReset() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var abfrageZelle = "F1:F6"
    var ausgabeZelle = "F1:F6"
    var WertVonAbfrageZelle = ss.getRange(abfrageZelle).getValue();

    if(WertVonAbfrageZelle=="Nein"){
    ss.getRange(ausgabeZelle).setValue("Ja");
    }
    else if(WertVonAbfrageZelle=="N/A"){
    ss.getRange(ausgabeZelle).setValue("N/A");
    }
    else if(WertVonAbfrageZelle=="Ja"){
    ss.getRange(ausgabeZelle).setValue("Ja");
    }
    else if(WertVonAbfrageZelle=="???"){
    ss.getRange(ausgabeZelle).setValue("???");
    }
    else
    ss.getRange(ausgabeZelle).setValue("");
    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert