Sicherer Zugriff mit dem Operator ?
Quizfrage
Was liefert item()?['id'], wenn die Eigenschaft id fehlt?
Auflösung
- A) Den Wert null, und der Flow läuft weiterRichtig. Das Fragezeichen macht aus einer fehlenden Eigenschaft null, statt die Aktion scheitern zu lassen.
- B) Einen Fehler, der die Aktion sofort abbrichtFalsch. Das passiert ohne Fragezeichen: item()['id'] bricht mit InvalidTemplate ab.
- C) Den Wert des vorherigen Eintrags im ArrayFalsch. Der Ausdruck greift nur auf den aktuellen Eintrag zu und übernimmt keine Werte aus anderen Einträgen.
Worum es geht
Daten aus Listen, Mails oder Schnittstellen sind selten vollständig. Ein Ausdruck wie item()['id'] geht davon aus, dass die Eigenschaft id immer vorhanden ist. Fehlt sie in einem einzigen Eintrag, bricht die Aktion mit dem Fehler InvalidTemplate ab. Mit einem Fragezeichen vor der Klammer, also item()?['id'], liefert der Ausdruck in diesem Fall null statt eines Fehlers. Das Fragezeichen schützt nur die Klammer, vor der es steht. Bei verschachtelten Pfaden setzt du es deshalb vor jede Stufe. Danach entscheidest du, was bei null passieren soll, zum Beispiel mit coalesce() und einem Ersatzwert oder mit einer Condition. Gegen einen falschen Datentyp hilft das Fragezeichen nicht.
Der Ausdruck aus dem Tipp
item()?['id']Wann einsetzen, wann nicht
Einsetzen
Bei jedem Zugriff auf Daten, deren Felder nicht immer vorhanden sind, etwa Antworten von Schnittstellen oder optionale Listenspalten.
Lieber nicht
Wenn ein fehlendes Feld ein echter Fehler ist, den du sehen willst. Dann darf die Aktion scheitern.
Häufigster Fehler
Das Fragezeichen nur bei der ersten Stufe setzen. triggerBody()?['missing']['x'] scheitert trotzdem, wenn missing fehlt.
Lizenz
Standard Läuft ohne Premium-Connector, also mit der Lizenz aus Microsoft 365. Beleg bei Microsoft Learn: Power Automate licensing FAQ. Für deinen ganzen Flow: Lizenz-Check.
Teilen
Kurzadresse: powerautomate.ninja/59
Quelle: PowerPlatformTip #59, Microsoft Learn: Workflow Definition Language schema reference.