Action - Script

Die Action Script führt ein Script mit einfachen Rechenoperation aus und um Variablen zu verändern.

Script Beschreibung
Reservierte Schlüsselwörter

Folgende Schlüsselwörter sind reserviert und dürfen nicht als Variablennamen verwendet werden:

abstract alias and AND assert boolean break byte case catch char class const continue def default do double else elsif ensure enum extends false final finally float for goto if implements import in instanceof int interface long mod native new next not NOT null or OR package private protected public redo repeat rescue retry return self short static strictfp super switch synchronized then this throw throws to transient true try undef unless until void volatile when while xor XOR yield

Nur eine kleine Anzahl der reservierten Schlüsselwörter werden momentan verwendet, wurden aber für zukünftige Erweiterungen der Scriptsprache reserviert.

Kommentare

Scripts können Kommentare enthalten, welche nicht ausgeführt werden, wenn das Script interpretiert wird.

  • Text nach // bis zum Ende der Zeile
  • Text zwischen /* und */. Ein solcher Kommentar kann sich auch über mehrere Zeilen erstrecken.
Beispiele:
    a=1+2;//Das ist ein Kommentar
    b=a+3;
    c=b+a;
    /* Das ist ein
        mehrzeiliger Kommentar */
    d=c*2;
Variablen

Ein Wert, wie eine Zahl oder eine Zeichenfolge, kann mit dem Zuweisungsoperator = in einer Variablen gespeichert werden.
Bei Variablennamen wird Gross- und Kleinschreibung unterschieden. Eine Variable muss mit einem Buchstaben, einem Währungssymbol (wie "$") oder einer verbindenden Punktuation (wie "_") beginnen. Der Rest des Namens kann auch Zahlen beinhalten. Unicode Zeichen werden unterstützt, es wird jedoch empfohlen nur US-ASCII Zeichen zu verwenden.

Beispiele:
    a = 3;//weise die Zahl drei der Variablen a zu
    b = a;//weise den in der Variablen a gespeicherten Wert der Variablen b zu

Es existieren zwei Gültigkeitsbereiche für Variablen:

Flow Lokal
Jede in einem Script, Ausdruck oder inline Script deklarierte Variable, ist standardmässig innerhalb des Flows sichtbar, solange der Name der Variable nicht mit global_ beginnt.

Beispiele von Flow lokalen Variablen mit der Zuweisung eines Wertes:
  • a = 1;   Nummer 1 gespeichert in einer Variablen 'a'
  • var1 = 1.234;   Dezimalzahl 1.234 gespeichert in einer Variablen 'var1'
  • var_123 = "Hello World";   Zeichenkette "Hello World" gespeichert in der Variablen 'var_123'
  • _m = true;   Boolscher Wert 'true' gespeichert in der Variablen '_m'
  • var2 = a;   speichert den Wert in Variablen 'a' in der Variablen 'var2'
Global
Jede Variable, die mit global_ beginnt, ist global und dadurch sichtbar für andere Flows. Die Variable wird zudem auf dem externen Speicher gespeichert und geladen, wenn der Automagic Service gestoppt und neu gestartet wird.

Beispiele von globalen Variablen mit der Zuweisung eines Wertes:
  • global_a = 1;   Nummer 1 gespeichert in der Variable 'global_a'
  • global_var1 = 1.234;   Dezimalzahl 1.234 gespeichert in der Variable 'global_var1'
  • global_var_123 = "Hello World";   Zeichenkette "Hello World" gespeichert in der Variable 'global_var_123'
  • global_m = true;   Boolscher Wert 'true' gespeichert in der Variable 'global_m'

Variablen sind Referenzen zu Werten (wie Zeiger). Zuweisung eines Wertes der in einer Variablen gespeichert ist und einer anderen Variablen zugewiesen wird, kopiert den Wert nicht, sondern beide Variablen zeigen auf den exakt gleichen Wert.
Das ist insbesondere bei modifizierbaren Werten wie Listen wichtig.
Beispiel:

    a = newList(1, 2, 3);
    b = a;
    //zu diesem Zeitpunkt zeigen beide Variablen auf die exakt
    // gleiche Liste (die Liste existiert nur einmal)
    addElement(a, 4);
    //die Liste enthält nun die Werte 1, 2, 3, 4
    //beide Variablen a und b zeigen immer noch auf dieselbe Liste

    //beide Schleifen geben deshalb die Werte 1, 2, 3 und 4 im Log aus:
    for (x in a)
    {
        log("{x}");
    }

    for (x in b)
    {
        log("{x}");
    }

Operatoren

Folgende Operatoren werden in Ausdrücken unterstützt:

  • +    Addition und Verkettung von Zeichenketten
  • -    Subtraktion
  • *    Multiplikation
  • /    Division
  • %    Modulo Division
  • <    kleiner als
  • <=    kleiner als oder gleich
  • >    grösser als
  • >=    grösser als oder gleich
  • ==    gleich
  • !=    nicht gleich
  • AND, &&    und
  • OR, ||    oder
  • XOR, ^    exklusives oder
  • NOT, !    nicht (unär)
Ausdrücke

Ein Ausdruck ist ein Konstrukt aus Variablen, Operatoren und Funktionsaufrufen, das zu einem einzelnen Resultat ausgewertet wird.

Beispiele:
  • 42
  • 1+2
  • a=1
  • b=a+1
  • c=(a+1)*(b-3)
  • global_a=1
  • a=sqrt(9)
  • b=addDays(triggertime, 3)
  • c=replace("hello automagic", "automagic", "world")
  • b=addDays(triggertime, sqrt(9))
  • b="Hello " + "World"
  • a=true
  • b=false
  • c=a AND b OR c>=5
  • d=NOT a AND NOT b
Inline Ausdrücke in Zeichenketten

Inline Ausdrücke in Zeichenketten können verwendet werden, um einen Teil einer Zeichenkette durch eine Variable oder einen Ausdruck zu ersetzen. Die hier beschriebenen Regeln gelten auch für alle Textfelder in Trigger, Conditions und Actions, welche in der Hilfeseite mit Variablen werden unterstützt beschrieben sind.
Ein inline Ausdruck wird in geschwungene Klammern eingeschlossen: {expression}.

Beispiele einfacher inline Ausdrücke:
  • var1="Test";
    var2="Das ist ein {var1}";

    'var2' wird den Wert "Das ist ein Test" enthalten, nachdem das Script ausgeführt wurde
  • var="Eins plus Zwei ergibt {1 + 2}";
    'var' wird ausgewertet zu "Eins plus Zwei ergibt 3"

Inline Ausdrücke können formatiert werden, indem ein Formattyp und abhängig vom Formattyp ein Pattern angegeben wird: {var,Formattyp,Pattern}

Beispiel inline Ausdrücke mit Formatierung:
  • var="Heute ist der {getDate(),dateformat,dd.MM.yyyy}";
    'var' wird ausgewertet zu "Heute ist der 21.07.2012"
  • var="Es ist {getDate(),dateformat,HH:mm}";
    'var' will wird ausgewertet zu "Es ist 12:32"
  • var="Es ist {getDate(),dateformat,timezone,UTC,HH:mm}";
    'var' wird ausgewertet zu "Es ist 10:32"
  • var="Wert: {1.456789,numberformat,0.00}";
    'var' wird ausgewertet zu "Wert: 1.46"
  • var="Ich bin hier: {location,locationformat,decimal}";
    'var' wird ausgewertet zu "Ich bin hier: 46.76817,7.603751"
  • var="{files,listformat,comma}";
    'var' wird ausgewertet zu "/mnt/sdcard/Datei1,/mnt/sdcard/Datei2"
Unterstützte Formattypen:
  • dateformat: Formatiert das Datum gemäss dem definierten Pattern. Siehe Pattern Zeichen für eine Beschreibung des Pattern Formats.
    Optional kann das Unterformat timezone mit dem Namen der Zeitzone angegeben werden um Datum/Zeit zu formatieren. Gültige Namen von Zeitzonen sind UTC, GMT oder der Olson-Name einer Zeitzone in der Form Gebiet/Standort, wie z.B. America/Los_Angeles (geräteabhängig). GMT wird bei unbekannten Zeitzonen verwendet.
    Beispiele:
    • {triggertime,dateformat,timezone,UTC,HH:mm}
    • {triggertime,dateformat,timezone,America/Los_Angeles,HH:mm}
    • {triggertime,dateformat,timezone,Europe/London,HH:mm}
    • {triggertime,dateformat,timezone,Europe/Paris,HH:mm}
    • {triggertime,dateformat,timezone,Africa/Harare,HH:mm}
  • numberformat: Formatiert die Zahl gemäss dem definierten Pattern. Siehe Pattern Zeichen für eine Beschreibung des Pattern Formats.
  • locationformat: Formatiert wenn möglich die Adresse des Standortes in einer Zeile, wenn kein Pattern angegeben wird. (Datenverbindung wird vorausgesetzt)
    Folgende locationformat Pattern werden unterstützt:
    • multiline: Formatiert die Adresse als mehrzeiliger Text. (Datenverbindung wird vorausgesetzt)
    • decimal: Formatiert Breitengrad,Längengrad als Zahlen (+/-DDD.DDDDD). Beispiel: 46.76817,7.603751.
    • microdegrees: Formatiert Breitengrad,Längengrad multipliziert mit 1'000'000 als ganze Zahlen. Beispiel: 46768355,7604022. Dieses Format kann bei Aufruf eines REST-Services hilfreich sein.
    • swiss: Formatiert Breitengrad,Längengrad als Zahlen konvertiert in Schweizer Landeskoordinaten.
  • listformat: Formatiert die Liste der Werte als mehrzeiligen Text, wenn kein Pattern angegeben wird.
    Folgende listformat Pattern werden unterstützt:
    • comma: Formatiert die Liste der Werte als Komma separierte Liste.
    • semicolon: Formatiert die Liste der Werte als Semikolon separierte Liste.
  • jsonformat: Formatiert den Wert als JSON-Fragment.

Inline Ausdrücke in Strings mit einfachen Anführungszeichen werden nicht ausgewertet. Das kann hilfreich sein, um in regulären Ausdrücken wie ([0-9]){2}.* den Quantifier {2} nicht mit 2 zu ersetzen.

Beispiel:
  • var='Heute ist der {getDate(),dateformat,dd.MM.yyyy}';
    'var' wird ausgewertet zu 'Heute ist der {getDate(),dateformat,dd.MM.yyyy}'
Kontrollstrukturen
if-Anweisung
Eine if-Anweisung kann verwendet werden, um einen Block auszuführen, wenn eine Bedingung erfüllt ist.
Beispiel:
    if (a<3)
    {
        b = 0;
    }
    else
    {
        b = 1;
    }
In diesem Beispiel wird der Variablen b die Zahl 0 zugewiesen, wenn Variable a einen Wert kleiner als 3 enthält, b wird Eins zugewiesen, wenn Variable a einen Wert grösser oder gleich 3 enthält.
for-Schleife
Eine for-Schleife wertet den Block für jeden Wert in einer Liste einmal aus.
Beispiel:
    list=newList(1, 2, 3);

    for (a in list)
    {
        log("a enthält {a}");
    }
Dieses Beispiel würde folgende Ausgabe im Log erzeugen:
    a enthält 1
    a enthält 2
    a enthält 3
Numerischer Listenerzeugungsausdruck
Da in Scripts häufig Listen mit numerischen aufsteigenden Werten erzeugt werden müssen, gibt es folgende vereinfachte Schreibweise: [<Zahl> to <Zahl>, <Schrittgrösse>]:
Beispiele:
    list = [1 to 10];//ohne Angabe der optionalen Schrittgrösse

    for (a in list)
    {
        log(a);
    }
    //logs 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

    //inlined
    for (a in [1 to 10])
    {
        log(a);
    }
    //logs 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

    //inlined mit einer Schrittgrösse von 2
    for (a in [1 to 10, 2])
    {
        log(a);
    }
    //logs 1, 3, 5, 7, 9

    //inlined mit einer negativen Schrittgrösse von -3
    for (a in [10 to 1, -3])
    {
        log(a);
    }
    //logs 10, 7, 4, 1

Zugriff auf Listen- und Map-Elemente
Auf einzelne Werte in einer Liste oder einer Map können mit eckigen Klammern zugegriffen werden.
Beispiele:
    list = [1 to 10];
    a = list[0];//erstes Element der Liste
    a = list[1];//zweites Element der Liste

    list[2] = 999;//weist dem dritten Element den Wert 999 zu

    map = newMap();
    map["key1"] = 1;//erstellt einen Eintrag mit key1-->1
    map["key2"] = 2;//erstellt einen Eintrag mit key2-->2

    a = map["key1"];//liest den Wert des Eintrages key1 aus: 1
    a = map["key2"];//liest den Wert des Eintrages key2 aus: 2
while-Schleife
Eine while-Schleife führt den Block so oft aus, wie eine Bedingung erfüllt ist.
Beispiel:
    a = 0;

    while (a < 10)
    {
        log(a);
        a = a + 1;
    }
    //logs 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
return-Statement
Das return-Statement kann verwendet werde, um ein Skript vorzeitig zu beenden und um optional einen Wert zurückzugeben.
Beispiel:
    a = null;
    if (a == null)
    {
        return;
    }

    log("X");//wird nicht erreicht, da das Skript vorher abgebrochen wird
break statement
Das break-Statement kann verwendet werden, um eine Schleife vorzeitig abzubrechen und das Skript nach der Schleife fortzuführen.
Beispiel:
    for (a in [1 to 10])
    {
        if (a == 4)
        {
            break;
        }
        log(a);
    }

    log("X");
    //logs 1, 2, 3, X
continue statement
Das continue-Statement kann verwendet werden, um eine Schleife sofort mit der nächsten Iteration fortzuführen.
Beispiel:
    for (a in [1 to 10])
    {
        if (a == 4)
        {
            continue;
        }
        log(a);
    }

    log("X");
    //logs 1, 2, 3, 5, 6, 7, 8, 9, 10, X
Funktionen
Eingebaute Funktionen können verwendet werden, um trigonometrische Werte zu berechnen, Listen zu erstellen, Werte aus einem XML zu extrahieren und vieles mehr.
Beispiele:
    a = sin(1.2);//wird ausgewertet zu 0.932039...
    a = max(1, 2, 3, 4, 5);//wird ausgewertet zu 5
    a = isEmpty([1 to 10]);//wird ausgewertet zu false
    a = containsElement([1 to 10, 2], 3);//wird ausgewertet zu true
Tipp: Die Seite Script Beispiele enthält weitere nützliche Beispiele von häufig genutzten Funktionen.
  • Object convertNull(Object value, Object defaultValue)
    Gibt den Wert des ersten Argumentes zurück oder default wenn der Wert null ist.
  • Number abs(Number value)
    Gibt das den absoluten Wert von value zurück.
  • Number pow(Number base, Number exponent)
    Gibt das Resultat von base hoch exponent.
  • Number sqrt(Number a)
    Gibt die Quadratwurzel der Nummer zurück.
  • Number sin(Number a)
    Gibt den Sinus des Winkels in Radiant zurück.
  • Number cos(Number a)
    Gibt den Kosinus des Winkels in Radiant zurück.
  • Number tan(Number a)
    Gibt den Tangens des Winkels in Radiant zurück.
  • Number asin(Number a)
    Gibt den Arkussinus des Winkels in Radiant zurück.
  • Number acos(Number a)
    Gibt den Arkuscosinus des Winkels in Radiant zurück.
  • Number atan(Number a)
    Gibt den Arkustangens des Winkels in Radiant zurück.
  • Number atan2(Number y, Number x)
    Gibt den Winkel der polaren Koordinaten der kartesische Koordinate (x, y) zurück.
  • Number sinh(Number a)
    Gibt den Sinus Hyperbolicus des Wertes zurück.
  • Number cosh(Number a)
    Gibt den Kosinus Hyperbolicus des Wertes zurück.
  • Number tanh(Number a)
    Gibt den Tangens Hyperbolicus des Wertes zurück.
  • Number log10(Number a)
    Gibt den Logarithmus mit Basis 10 des Wertes zurück.
  • Number ln(Number a)
    Gibt den natürlichen Logarithmus (Basis e) des Wertes zurück.
  • Number toRadians(Number a)
    Konvertiert einen Winkel von Grad in Radiant.
  • Number toDegrees(Number a)
    Konvertiert einen Winkel von Radiant in Grad.
  • Number round(Number a)
    Rundet den Wert auf die nächste ganze Zahl.
  • Number ceil(Number a)
    Liefert die nächste ganze Zahl, die grösser oder gleich dem Parameter value ist.
  • Number floor(Number a)
    Liefert die nächste ganze Zahl, die kleiner oder gleich dem Parameter value ist.
  • Date addDays(Date d, Number a)
    Gibt ein neues Datum durch hinzufügen von a Tagen zu d zurück.
  • Date addHours(Date d, Number a)
    Gibt ein neues Datum durch hinzufügen von a Stunden zu d zurück.
  • Date addMinutes(Date d, Number a)
    Gibt ein neues Datum durch hinzufügen von a Minuten zu d zurück.
  • Date addSeconds(Date d, Number a)
    Gibt ein neues Datum durch hinzufügen von a Sekunden zu d zurück.
  • Date getDate()
    Gibt das aktuelle Datum mit der aktuellen Uhrzeit zurück.
  • Date getDate(String date, String pattern)
    Wandelt den String gemäss dem spezifizierten Pattern in ein Datum um. (siehe Pattern Definition)
  • Date getDate(Number year, Number month, Number day)
    Gibt ein neues Datum zurück.
  • Date getDate(Number year, Number month, Number day, Number hours, Number minutes, Number seconds)
    Gibt ein neues Datum zurück.
  • Date getDate(Date date, Number hours, Number minutes, Number seconds)
    Gibt ein neues Datum zurück.
  • Date getDate(Date date, Number hours, Number minutes, Number seconds, String timezone)
    Gibt ein neues Datum in der gegebenen Zeitzone zurück.
  • Number getUptimeMillis()
    Gibt die Dauer seit Boot in Millisekunden zurück. Die Zeit in Deep sleep wird nicht gezählt.
  • Number getElapsedRealtimeMillis()
    Gibt die Dauer seit Boot in Millisekunden zurück. Die Zeit in Deep sleep wird auch dazugezählt.
  • Number getDurationMillis(String duration)
    Gibt die Dauer des angegebenen Strings in Millisekunden zurück (Bsp. "2m 15s" gibt 135000 zurück).
  • String getDurationString(Number duration)
    Gibt die Dauer als String zurück (Bsp. 135000 gibt "2m 15s" zurück).
  • Number getByteSize(String byteSize)
    Gibt die Anzahl Bytes des angegebenen Strings zurück (Bsp. "10kb 15b" gibt 10255 zurück).
  • String getByteSizeString(Number byteSize)
    Gibt die Bytes als formatierten String zurück (Bsp. 10255 gibt "10kb 15b" zurück).
  • Number toNumber(String number)
    Konvertiert den angegebenen Parameter in eine Zahl.
  • Number min(Number n1, Number n2, ...)
    Gibt den kleinsten Wert der Parameter zurück.
  • Number max(Number n1, Number n2, ...)
    Gibt den grössten Wert der Parameter zurück.
  • Boolean isEmpty(String s)
    Prüft ob der String leer ist oder nicht.
  • Number length(String s)
    Gibt die Anzahl der Zeichen im String s zurück.
  • String substring(String s, Number start, Number end)
    Gibt den gewünschten Teilstring zurück.
  • String substring(String s, Number start)
    Gibt den Teilstring ab dem angegebenen Index zurück.
  • String left(String s, Number length)
    Gibt die ersten length Zeichen des Strings zurück.
  • String right(String s, Number length)
    Gibt die letzten length Zeichen des Strings zurück.
  • Number indexOf(String s, String search)
    Gibt den ersten Index des String search innerhalb s zurück.
  • Number indexOf(String s, String search, Number start)
    Gibt den ersten Index des String search innerhalb s nach Index start zurück.
  • Number lastIndexOf(String s, String search)
    Gibt den letzten Index des String search innerhalb s zurück.
  • Number lastIndexOf(String s, String search, Number start)
    Gibt den letzten Index des String search innerhalb s vor Index start zurück.
  • Boolean startsWith(String s, String prefix)
    Prüft ob der String s mit prefix beginnt.
  • Boolean endsWith(String s, String suffix)
    Prüft ob der String s mit suffix endet.
  • Boolean contains(String s, String search)
    Prüft ob der String s den Teilstring search enthält.
  • List split(String s, String pattern)
    Teilt den String s in ein Array von String mit dem regulären Ausdruck pattern als Trenner. (siehe Reguläre Ausdrücke)
  • List splitCSVRecord(String s)
    Teilt den Komma-getrennten String s in eine Liste von Tokens auf. Anführungszeichen um Felder zu escapen wird berücksichtigt.
  • List splitCSVRecords(String s)
    Teilt mehrere Zeilen eines Komma-getrennten Strings s in eine Liste (pro Zeile) von Listen von Tokens auf. Anführungszeichen um Felder zu escapen wird berücksichtigt.
  • String join(List list, String delimiter)
    Verbindet die Elemente der Liste mit dem gegebenen Trenner und gibt das Resultat als String zurück.
  • Boolean matches(String s, String pattern)
    Prüft ob der String s vom regulären Ausdruck pattern gematched wird. (siehe Reguläre Ausdrücke)
  • Boolean matches(String s, String pattern, List groups)
    Prüft ob der String s vom regulären Ausdruck pattern gematched wird und füllt die Gruppen in die bestehende Liste groups ab. (siehe Reguläre Ausdrücke)
  • List findAll(String s, String pattern)
    Gibt eine Liste der gefundenen Werte in s der Regex pattern (siehe Reguläre Ausdrücke)
  • List findAll(String s, String pattern, boolean returnGroups)
    Gibt eine Liste der gefundenen Werte in s der Regex pattern. Optional besteht jedes Element aus einer Liste der enthaltenen Gruppen. (siehe Reguläre Ausdrücke)
  • String replace(String s, String search, String replace)
    Gibt den neuen String nach Suchen von search und Ersetzen mit replace zurück.
  • String replaceAll(String s, String regex, String replacement)
    Gibt den neuen String zurück, bei dem alle Substrings welche regex matchen mit replacement ersetzt werden. (siehe Reguläre Ausdrücke)
  • String trim(String s)
    Gibt den veränderten String nach Entfernung von führenden und nachgestellten Whitespaces zurück.
  • String concat(Object o1, ...)
    Gibt die spezifizierten Objekte als zusammengesetzten String zurück.
  • String toUpperCase(String s)
    Konvertiert den String in Grossbuchstaben mit den Regeln des Standard Locales.
  • String toLowerCase(String s)
    Konvertiert den String in Kleinbuchstaben mit den Regeln des Standard Locales.
  • String encodeURLForm(String urlPart)
    URL-codiert den angegebenen String urlPart (für application/x-www-form-urlencoded, Spaces codiert als +).
  • String encodeURL(String urlPart)
    URL-codiert den angegebenen String urlPart (Spaces codiert als %20).
  • String encodeHTML(String text)
    HTML-codiert den angegebenen Text.
  • List newList(Object o1, ...)
    Gibt eine neue Liste mit den spezifizierten Objekten als Elemente zurück.
  • List copyList(List list)
    Gibt eine Kopie der Liste zurück (flache Kopie).
  • Number length(List list)
    Gibt die Anzahl Elemente in list zurück.
  • Boolean isEmpty(List list)
    Prüft ob die Liste leer ist oder nicht.
  • List addElement(List list, Object o1)
    Gibt die selbe Liste nach hinzufügen des Elementes am Ende der Liste zurück. Gibt eine neue Liste zurück, wenn die Liste noch nicht existiert.
  • List addElement(List list, Number index, Object o1)
    Gibt die selbe Liste nach hinzufügen des Elementes beim angegebenen Index (Null basiert) zurück.
  • List addAllElements(List list, List elementsToAdd)
    Gibt die selbe Liste nach hinzufügen aller Elemente der Liste elementsToAdd zurück.
  • List removeDuplicateElements(List list)
    Gibt die selbe Liste nach nach entfernen aller Duplikate zurück.
  • List removeElementValue(List list, Object o1)
    Gibt die selbe Liste nach entfernen aller Elemente mit dem spezifizierten Wert zurück.
  • List removeAllElementValues(List list, List elementsToRemove)
    Gibt die selbe Liste nach entfernen aller Elemente der zweiten Liste zurück.
  • Boolean containsElement(List list, Object o1)
    Gibt true zurück, wenn die Liste das angegebene Element enthält.
  • Object removeElement(List list, Number index)
    Entfernt das Objekt mit dem angegebenen Index (Null basiert) aus der Liste und gibt das entfernte Objekt zurück.
  • List removeElements(List list, Number fromIndex, Number toIndex)
    Entfernt die Objekte an dem angegebenen Index Bereich (Null basiert, [fromIndex,toIndex[) aus der Liste und gibt die entfernten Objekte als Liste zurück.
  • Object getElement(List list, Number index)
    Gibt das Objekt mit dem angegebenen Index (Null basiert) der Liste zurück.
  • List setElement(List list, Number index, Object value)
    Überschreibt des Objekt mit dem angegebenen Index (Null basiert) mit dem neuen Wert.
  • Object getRandomElement(List list)
    Gibt ein zufälliges Element der Liste zurück.
  • List shuffleList(List list)
    Vertauscht die Elemente der Liste zufällig.
  • Number indexOfElement(List list, Object value)
    Gibt den ersten Index des Elementes in der Liste zurück oder -1 wenn das Element nicht in der Liste enthalten ist.
  • Number indexOfElement(List list, Object value, Number start)
    Gibt den ersten Index des Elementes in der Liste zurück welcher grösser oder gleich start ist oder -1 wenn das Element nicht in der Liste enthalten ist.
  • List sort(List list, Boolean casesensitive, Boolean natural)
    Verändert die Liste indem die Einträge sortiert werden.
  • List reverse(List list)
    Verändert die Liste indem die Reihenfolge der Einträge umgekehrt wird.
  • Map newMap()
    Erstellt eine neue leere Map
  • Map newMapFromValues(String key1, Object value1, ...)
    Erstellt eine neue Map mit den definierten Schlüssel/Wert-Paaren.
  • Boolean isEmpty(Map map)
    Prüft ob die Map leer ist oder nicht.
  • Number length(Map map)
    Gibt die Anzahl Elemente in map zurück.
  • Map copyMap(Map map)
    Gibt eine Kopie der Map zurück (flache Kopie).
  • Map addMapEntry(Map map, String key, Object value)
    Fügt einen neuen Eintrag key->value in die Map ein und gibt die Map zurück. Gibt eine neue Map zurück, wenn die Map noch nicht existiert.
  • Map addAllMapEntries(Map map, Map entriesToAdd)
    Fügt alle Einträge der zweiten Map in die erste Map ein und gibt die erste Map zurück.
  • Object getMapValue(Map map, String key)
    Gibt das Objekt für key zurück oder null wenn kein Mapping für key existiert.
  • Object getMapValue(Map map, String key, Object default)
    Gibt das Objekt für key zurück oder default wenn kein Mapping für key existiert oder map null ist.
  • Object removeMapEntry(Map map, String key)
    Löscht den Eintrag für key aus der Map und gibt den Wert zurück.
  • List getMapKeys(Map map)
    Gibt die Liste der Keys von map zurück.
  • List getMapValues(Map map)
    Gibt die Liste der Werte von map zurück.
  • String evaluateXPathAsString(String xml, String xpath)
    Wertet den XPath Ausdruck aus und gibt das Resultat als String zurück. (siehe XPath Spezifikation)
  • String hash(String value, String encoding, String algorithm)
    Berechnet den Hash von value mittels dem angegebenen encoding (wie UTF-8 oder UTF-16LE) und Hash-algorithm (wie MD5 oder SHA1).
  • String toJSON(Object value)
    Wandelt das gegebene Object in einen JSON String um.
  • String toJSON(Object value, Boolean indent)
    Wandelt das gegebene Object in einen JSON String um, eingerückt oder nicht.
  • Object fromJSON(String value)
    Wandelt den gegebenen JSON String in ein Objekt um.
  • Object log(Object value)
    Logged das Objekt im Automagic Log und gibt das Objekt unverändert zurück.
  • Object eval(String script)
    Führt den String als Skript aus und gibt den Wert des letzten ausgeführten Ausdrucks zurück.
  • Number random()
    Gibt eine Zufallszahl zwischen 0.0 und 1.0 (exklusive) zurück.
  • Number random(Number low, Number high)
    Gibt eine Zufallszahl zwischen low und high (inklusive) zurück.
  • Boolean sleep(Number milliseconds)
    Wartet für die angegebene Anzahl Millisekunden.
  • Boolean sleep(String duration)
    Wartet für die angegebene Dauer wie "2m 30s".
  • Boolean existsFile(String path)
    Prüft ob eine Datei mit dem angegebenen Pfad existiert oder nicht.
  • Boolean isDirectory(String path)
    Prüft ob eine Datei mit dem angegebenen Pfad ein Ordner ist.
  • String getExternalStorageDir()
    Gibt den Pfad des primären externen Speichers zurück.
  • Number getPixelColor(Bitmap image_data, Number x, Number y)
    Gibt den Farbwert (argb) des Pixels vom Bild image an Position x, y zurück.
  • Number getRed(Number color)
    Gibt die rote Komponente der übergebenen Farbe color zurück.
  • Number getGreen(Number color)
    Gibt die grüne Komponente der übergebenen Farbe color zurück.
  • Number getBlue(Number color)
    Gibt die blaue Komponente der übergebenen Farbe color zurück.
  • Number getAlpha(Number color)
    Gibt die alpha Komponente der übergebenen Farbe color zurück.
  • Number newColor(Number a, Number r, Number g, Number b)
    Gibt eine neue Farbe aus den angegebenen ARGB-Komponenten zurück.
  • Number distance(Location loc1, Location loc2)
    Berechnet die Distanz in Metern zwischen den Standorten loc1 und loc2.
  • Location newLocation(Number latitude, Number longitude)
    Erstellt eine neue Location für die angegebenen Koordinaten latitude und longitude.
  • String setHTTPResponseHeader(String header, String value)
    Setzt den HTTP Header auf den angegebenen Wert und gibt den Wert zurück.
  • Number setHTTPResponseStatus(Number status)
    Setzt den HTTP Status der Response auf den angegebenen Wert und gibt den Wert zurück.
  • Boolean isList(Object value)
    Gibt zurück, ob der angegebene Wert eine Liste ist oder nicht.
  • Boolean isMap(Object value)
    Gibt zurück, ob der angegebene Wert eine Map ist oder nicht.
  • Boolean isString(Object value)
    Gibt zurück, ob der angegebene Wert ein String ist oder nicht.
  • Boolean isNumber(Object value)
    Gibt zurück, ob der angegebene Wert eine Zahl ist oder nicht.
  • Boolean isBoolean(Object value)
    Gibt zurück, ob der angegebene Wert ein Boolean ist oder nicht.
  • Boolean isLocation(Object value)
    Gibt zurück, ob der angegebene Wert eine Location ist oder nicht.
  • Object getWidgetElementProperty(String widgetName, String elementName, String property)
    Gibt den aktuellen Wert der Eigenschaft des angegebenen Widgetelementes zurück.
  • Object setWidgetElementProperty(String widgetName, String elementName, String property, Object value)
    Setzt die angegebene Eigenschaft des spezifizierten Widgetelementes auf den Wert value.
  • Boolean refreshWidget(String widgetName, Boolean reloadImages)
    Aktualisiert das Widget und lädt Bilder optional auch neu.
  • String getAppName(String packageName)
    Gibt den App-Namen des angegebenen Packages zurück oder null wenn nicht verfügbar.
  • String getActivityName(String packageName, String className)
    Gibt das Activity-Name der angegebenen Activity zurück oder null wenn nicht verfügbar.
  • String getServiceName(String packageName, String className)
    Gibt das Service-Name des angegebenen Services zurück oder null wenn nicht verfügbar.
  • List getFlowNames()
    Gibt eine Liste mit den Namen aller Flows zurück.
  • List getFlowNamesByGroup(String group)
    Gibt eine Liste mit den Namen der Flows der angegebenen Gruppe group zurück.
  • List getFlowGroupNames()
    Gibt eine Liste mit den Namen aller Flowgruppen zurück.
  • List getWidgetNames()
    Gibt eine Liste mit den Namen aller Widgets zurück.
  • Map getFlowStatisticsDuration()
    Gibt eine Map der ausgeführten flows zurück. Schlüssel=Flowname, Wert=Total Ausführungszeit in Millisekunden, sortiert absteigend nach Wert.
  • Map getFlowStatisticsCount()
    Gibt eine Map der ausgeführten flows zurück. Schlüssel=Flowname, Wert=Total Anzahl Ausführungen, sortiert absteigend nach Wert.
  • Boolean resetFlowStatistics()
    Setzt die Flowstatistik zurück
  • Object getValue(String name, Object default)
    Gibt den Wert der Variable name zurück oder default wenn die Variable nicht definiert ist oder null ist.
  • Object setValue(String name, Object value)
    Setzt die Variable name auf value und gibt value zurück.
  • Object removeVariable(String name)
    Entfernt die Variable name.
  • List getVariableNames()
    Gibt eine Liste aller momentan verfügbaren Variable zurück (lokal und global).
  • Number getAndroidSDKVersion()
    Gibt die SDK Version des Android frameworks zurück. (siehe Android API Versionen)
  • Object getContext()
    Gibt den Context der Applikation zurück.
  • Object callJavaStaticMethod(String className, String methodSignature, Object params, ...)
    Ruft die definierte öffentliche statische Methode der definierten Klasse auf.
  • Object callJavaConstructor(String className, String constructorSignature, Object params, ...)
    Ruft den öffentlichen Konstruktor der definierten Klasse auf.
  • Object callJavaMethod(Object obj, String className, String methodSignature, Object params, ...)
    Ruft die definierte Instanz-Methode das definierten Objektes auf.
  • Object getJavaStaticField(String className, String fieldName)
    Gibt den Wert des angegebenen öffentlichen statischen Feldes zurück.
  • Object setJavaStaticField(String className, String fieldName, Object value)
    Setzt den Wert des angegebenen öffentlichen statischen Feldes.
  • Object getJavaField(Object obj, String className, String fieldName)
    Gibt den Wert des angegebenen öffentlichen Instanz-Feldes zurück.
  • Object setJavaField(Object obj, String className, String fieldName, Object value)
    Setzt den Wert des angegebenen öffentlichen Instanz-Feldes.
Hinweis: Fehlt dir eine Funktion? Bitte melde dich bei uns im Forum.
Themen für Fortgeschrittene
Jeder ausführbare Ausdruck in einem Script führt zu einem Wert. Ein Block führt zum Wert des zuletzt ausgeführten Ausdrucks. Dies erlaubt es beispielsweise mehrere Ausdrücke in einem Inline Script zu verwenden:
    s = "{a=1;b=2}";
    log(s);//logs 2

    a = true;
    b = if (a) 1 else 2;
    log(b);//logs 1

    for (a in [0 to 10])
    {
        log(if(a<5) "X" else "-");
    }
    //logs X, X, X, X, X, -, -, -, -, -, -

    b=0;
    log(for(a in [1 to 10]) {b=b+a});
    //logs 55