Skip to content

ApptiveScript-Funktionen

Vollständige Liste der Funktionen, die in einem Ausdruck zur Verfügung stehen — in Formelspalten, in der bedingten Sichtbarkeit von Blöcken, in Flow-Bedingungen und in Filtern.

Diese Seite ist zum Nachschlagen gedacht. Wenn Sie zum ersten Mal einen Ausdruck schreiben, fangen Sie bei Was ist ApptiveScript an.

So lesen Sie die Tabellen

Ein Ausdruck ist immer Wert, Punkt, Funktion:

fieldValue('preis').multiplyBy(1.19)

Links vom Punkt steht ein Wert, rechts eine Funktion aus der Tabelle seines Typs. Das Ergebnis hat wieder einen Typ — und darauf können Sie erneut eine Funktion anwenden:

fieldValue('nachname').concat(fieldValue('vorname'), ', ').isNotEmpty()
SpalteBedeutung
FunktionDer Name, so wie er geschrieben wird. Einträge mit vorangestelltem Punkt und ohne Klammern — etwa .email — sind Eigenschaften und brauchen keine Argumente.
ArgumenteWas in die Klammern gehört, in dieser Reihenfolge: name: Typ.
ErgebnisDer Typ des Ergebnisses. Er entscheidet, welche Tabelle für den nächsten Punkt gilt. Any heißt: ein Wert, dessen Typ erst beim Auswerten feststeht — etwa bei einem Wert aus JSON-Daten.

Funktionsnamen sind englisch und bleiben es auch in der deutschen Oberfläche. Groß- und Kleinschreibung ist verbindlich.

Der Typ steht im Editor

Der Dialog Einen Ausdruck bearbeiten zeigt über dem Beispielergebnis den ermittelten Typ an — Typ: String, Typ: Number und so weiter. Damit finden Sie die Tabelle, die für den nächsten Punkt gilt. Der Reiter Search im Editor führt ohnehin nur die Funktionen des gerade ermittelten Typs.

Mit oder ohne geschweifte Klammern

Wo Sie schreibenSchreibweise
Formeleditor, Sichtbarkeit, erweiterte Flow-Logiknur der Ausdruck: fieldValue('preis').multiplyBy(1.19)
normales Textfeld in einem Flow-Schrittin Klammern: Ihre Rechnung über {{ fieldValue('betrag') }} Euro

Ein Ausdruck ohne Klammern behält seinen Typ. Sobald Sie ihn in einen Text einbauen, ist das Ergebnis Text — und lässt sich nicht mehr weiterrechnen.

Werte in den Ausdruck holen

Womit ein Ausdruck anfängt, hängt davon ab, wo er steht:

EinstiegBedeutungVerwendet in
fieldValue('<Feld-Id>')ein Feld des aktuellen EintragsFormelspalten, Filter
formValues.get('<Key>')ein Eingabewert der Seitebedingte Sichtbarkeit
step('<Schritt-Id>').outputdas Ergebnis eines früheren Flow-SchrittsFlows
today()das heutige Datumüberall
now()der aktuelle Zeitpunktüberall
true, falsefeste Wahrheitswerteüberall

Feld-Ids und Schritt-Ids tippt niemand von Hand — der Editor fügt sie über den Picker ein. Der Key eines Eingabeblocks ist dagegen selbst gewählt; er steht unter Keys verwalten.

Ids sind keine Namen

fieldValue('…') verweist auf die Id einer Spalte, nicht auf ihren Namen. Das ist gewollt: Eine Formel überlebt damit das Umbenennen der Spalte. Umgekehrt heißt es aber auch, dass sich ein Ausdruck nicht durch Lesen der Feldnamen prüfen lässt.

Leere Werte

Ein Feld, das nicht gefüllt ist, liefert keinen Fehler, sondern einen leeren Wert. Zwei Funktionen fangen das ab:

FunktionWirkung
ifUndefined(<Ersatzwert>)setzt einen Ersatzwert ein, wenn der Wert fehlt
isEmpty() / isNotEmpty()prüft, ob ein Wert fehlt
fieldValue('spitzname').ifUndefined('unbekannt')

ifUndefined gibt es auf jedem Typ, isEmpty() und isNotEmpty() auf fast jedem — bei Zahl, allgemein und Geolokalisierung nicht. Die Tabellen weiter unten sagen es genau.

Erzeugt aus ApptiveScript 0.3.289 mit npm run apptivescript:reference.

Auf jedem Typ verfügbar

Diese Funktionen gibt es unabhängig davon, was links vom Punkt steht. In den Tabellen der einzelnen Typen sind sie deshalb nicht wiederholt.

FunktionArgumenteErgebnis
ifUndefined(…)AnyAny
isEqualTo(…)other: gleicher TypBoolean
isNotEqualTo(…)other: gleicher TypBoolean

Text

Text (String)

FunktionArgumenteErgebnis
asDateAndTime()DateAndTime
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asNumber()Number
beginsWith(…)prefix: StringBoolean
concat(…)string: String, separator: StringString
contains(…)substring: StringBoolean
endsWith(…)postfix: StringBoolean
isEmpty()Boolean
isNotEmpty()Boolean
match(…)pattern: StringCollection
parseJSON()KeyValueObject
substring(…)from: Number, to: NumberString

Einzelauswahl (Enum)

FunktionArgumenteErgebnis
asDateAndTime()DateAndTime
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asNumber()Number
beginsWith(…)prefix: StringBoolean
concat(…)string: String, separator: StringString
contains(…)substring: StringBoolean
endsWith(…)postfix: StringBoolean
isEmpty()Boolean
isNotEmpty()Boolean
match(…)pattern: StringCollection
parseJSON()KeyValueObject
substring(…)from: Number, to: NumberString

E-Mail (String)

FunktionArgumenteErgebnis
asJSONString()String
asJSONStringContent()String
beginsWith(…)prefix: StringBoolean
concat(…)string: String, separator: StringString
contains(…)substring: StringBoolean
endsWith(…)postfix: StringBoolean
isEmpty()Boolean
isNotEmpty()Boolean
match(…)pattern: StringCollection
parseJSON()KeyValueObject
substring(…)from: Number, to: NumberString

Zahlen

Zahl, allgemein (Number)

FunktionArgumenteErgebnis
asString()String
divideBy(…)number: NumberNumber
greaterThan(…)number: NumberBoolean
greaterThanOrEqual(…)number: NumberBoolean
minus(…)number: NumberNumber
multiplyBy(…)number: NumberNumber
plus(…)number: NumberNumber
smallerThan(…)number: NumberBoolean
smallerThanOrEqual(…)number: NumberBoolean

Zahl (Integer)

FunktionArgumenteErgebnis
asDateAndTime()String
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asString()String
divideBy(…)number: NumberNumber
greaterThan(…)number: NumberBoolean
greaterThanOrEqual(…)number: NumberBoolean
isEmpty()Boolean
isNotEmpty()Boolean
minus(…)number: NumberNumber
multiplyBy(…)number: NumberNumber
plus(…)number: NumberNumber
round(…)number: NumberDecimal
roundDown(…)number: NumberDecimal
roundUp(…)number: NumberDecimal
second()Duration
seconds()Duration
smallerThan(…)number: NumberBoolean
smallerThanOrEqual(…)number: NumberBoolean

Kommazahl und Währung (Decimal)

FunktionArgumenteErgebnis
asDateAndTime()String
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asString()String
divideBy(…)number: NumberDecimal
greaterThan(…)number: NumberBoolean
greaterThanOrEqual(…)number: NumberBoolean
isEmpty()Boolean
isNotEmpty()Boolean
minus(…)number: NumberDecimal
multiplyBy(…)number: NumberDecimal
plus(…)number: NumberDecimal
round(…)number: NumberDecimal
roundDown(…)number: NumberDecimal
roundUp(…)number: NumberDecimal
smallerThan(…)number: NumberBoolean
smallerThanOrEqual(…)number: NumberBoolean

Datum und Zeit

Datum (Date)

FunktionArgumenteErgebnis
add(…)amount: Number, unit: StringDateAndTime
addDays(…)numberOfDays: NumberDate
after(…)date: DateBoolean
before(…)date: DateBoolean
difference(…)date: DateDuration
isEmpty()Boolean
isNotEmpty()Boolean
isoString()String
minus(…)date: DateDuration
plus(…)duration: DurationDuration
subtract(…)amount: Number, unit: StringDateAndTime
subtractDays(…)numberofDays: NumberDate

Datum und Uhrzeit (DateAndTime)

FunktionArgumenteErgebnis
add(…)amount: Number, unit: StringDateAndTime
after(…)dateAndTime: DateAndTimeBoolean
before(…)dateAndTime: DateAndTimeBoolean
date()Date
isEmpty()Boolean
isNotEmpty()Boolean
isoString()String
minus(…)dateAndTime: DateAndTimeDuration
plus(…)dateAndTime: DateAndTimeDuration
subtract(…)amount: Number, unit: StringDateAndTime
toTimezoneString(…)timezone: StringString

Zeitspanne (Duration)

FunktionArgumenteErgebnis
asDays()Decimal
asHours()Decimal
asMinutes()Decimal
isEmpty()Boolean
isNotEmpty()Boolean

Wahrheitswerte

Häkchen und Entscheidung (Boolean)

FunktionArgumenteErgebnis
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
if(…)if: Any, else: AnyAny
isEmpty()Boolean
isFalse()Boolean
isNotEmpty()Boolean
isTrue()Boolean
logicalAnd(…)other: BooleanBoolean
logicalOr(…)other: BooleanBoolean

Listen

Liste, allgemein (Collection)

FunktionArgumenteErgebnis
add(…)element: AnyCollection
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asList()Collection
asString()String
at(…)index: IntegerAny
includesAllOf(…)entities: CollectionBoolean
includesAnyOf(…)entities: CollectionBoolean
includesNoneOf(…)entities: CollectionBoolean
isEmpty()Boolean
isNotEmpty()Boolean
size()Integer

Mehrfachauswahl (EnumCollection)

FunktionArgumenteErgebnis
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asString()String
at(…)index: IntegerAny
includes(…)entity: BooleanEnumCollection
includesAll(…)entities: CollectionEnumCollection
isEmpty()Boolean
isNotEmpty()Boolean
size()Integer

Mehrere Einträge verknüpfen (EntityCollection)

FunktionArgumenteErgebnis
add(…)element: StringEntityCollection
addEntity(…)element: StringEntityCollection
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
asString()String
at(…)index: IntegerAny
includes(…)entity: BooleanEntityCollection
includesAll(…)entities: CollectionEntityCollection
isEmpty()Boolean
isNotEmpty()Boolean
size()Integer

Zusammengesetzte Werte

JSON-Objekt (KeyValueObject)

FunktionArgumenteErgebnis
asJSONString()String
asJSONStringContent()String
asJSONStringPretty()String
get(…)key: StringAny
isEmpty()Boolean
isNotEmpty()Boolean

Dateien (Attachment)

FunktionArgumenteErgebnis
isEmpty()Boolean
isNotEmpty()Boolean
largeThumbnail()String
smallThumbnail()String
url()String

Geolokalisierung (GeoCoordinate)

FunktionArgumenteErgebnis
asJSONString()String
asString()String
lat()Number
latitude()Number
lon()Number
longitude()Number

Benutzer (User)

FunktionArgumenteErgebnis
.emailString
.firstNameString
.idString
.lastNameString
isEmpty()Boolean
isNotEmpty()Boolean

Erstellt von (CreatedByValue)

FunktionArgumenteErgebnis
.emailString
.idString
.typeString
displayValue()String
isEmpty()Boolean
isNotEmpty()Boolean

Weiter