Technik suchen

  • Gelber Gürtel
  • Standard
  • Tipp 59

Sicherer Zugriff mit dem Operator ?

Quizfrage

Was liefert item()?['id'], wenn die Eigenschaft id fehlt?

Auflösung

  1. A) Den Wert null, und der Flow läuft weiterRichtig. Das Fragezeichen macht aus einer fehlenden Eigenschaft null, statt die Aktion scheitern zu lassen.
  2. B) Einen Fehler, der die Aktion sofort abbrichtFalsch. Das passiert ohne Fragezeichen: item()['id'] bricht mit InvalidTemplate ab.
  3. 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.

Ganzer Tipp mit Screenshots auf powerplatformtip.comPowerPlatformTip #59, auf Englisch

Teilen

Kurzadresse: powerautomate.ninja/59

Quelle: PowerPlatformTip #59, Microsoft Learn: Workflow Definition Language schema reference.