Power Automate: Abrufen von SharePoint Listenelementen mit ODATA-Filter

Innerhalb eines Power Automate Flows im Bereich SharePoint kommt nicht selten die Aktion "Elemente abrufen" zum Einsatz. Diese ermöglicht das Auslesen einer SharePoint Liste. Die Aktion ist nicht ganz ungefährlich, da diese ohne weitere Konfiguration immer die gesamten SharePoint Listeninhalte verarbeitet und zurückliefert. Aus diesem Grunde sollte bei umfangreichen Listeninhalten immer ein Filter angewendet werden, der die Treffermenge reduziert. Dazu besitzt die Aktion eine Filtereigenschaft, wie in der nachfolgenden Abbildung erkennbar ist.

Im Feld "Abfrage filtern" kann ein Filterausdruck angegeben werden, um die Treffermenge einzuschränken. Dabei muss der Filter mittels ODATA-Syntax definiert werden. Dazu ist kurz zu klären, was überhaupt ODATA ist.

Das Open Data Protocol (OData) ermöglicht die Erstellung von REST-basierten Datendiensten, die es ermöglichen, mithilfe von Uniform Resource Identifiers (URIs) identifizierte und in einem Datenmodell definierte Ressourcen von Web-Clients mithilfe einfacher HTTP-Nachrichten zu veröffentlichen und zu bearbeiten

Gemäß der oberen Definition ist ODATA ein URI-basierte Schnittstelle, d. h. An- bzw. Abfragen werden über eine URL abgesetzt. Innerhalb einer URL können aber nicht alle Zeichen, wie z. B. die Klammern <>, einfach verwendet werden. Aus diesem Grund ergeben sich für ODATA-basierte Filter etwas andere Darstellungen für Filterdefinitionen.

Das zugehörige Video zeigt die Verwendung der ODATA-Filter in Power Automate und direkt über URI-Aufrufe in SharePoint Online.


Konkrete Beispiele

Abruf nur der Titel-Spalte von Listeneinträgen:

https://[TENANT].sharepoint.com/[SITE]/_api/web/lists([LIST-ID])/items?$select=Title

Auf die vollständige URL (https://[TENANT].sharepoint.com/[SITE]) wird nachfolgend verzichtet

Alle Einträge bei denen die E-Mail Adresse mit "sabine" beginnt:

[URL]/_api/web/lists([LIST-ID])/items?$select=Title&$filter=startswith(E_x002d_Mail,%20%27sabine%27)

Alle Einträge bei denen der Titel mit "Meier" beginnt:

[URL]/_api/web/lists([LIST-ID])/items?$select=Title&$filter=startswith(Title,%27Meier%27)

Alle Einträge mit Anrede gleich "Herr":

[URL]/_api/web/lists([LIST-ID])/items?$select=Title$filter=Anrede%20eq%20%27Herr%27

Alle Einträge mit Anrede gleich "Herr" oder "Frau":

[URL]/_api/web/lists([LIST-ID])/items?$select=Title&$filter=Anrede%20eq%20Herr%20or%20Anrede%20eq%20%27Frau%27

Für das Überspringen oder den Abruf von zum Beispiel den ersten 10 Elementen stehen noch die Operatoren $skip und $top zur Verfügung. Mittels $skip=10 können zum Beispiel die ersten 10 Treffer übersprungen werden und mit $top=10 werden nur die ersten 10 Treffer geladen. Über diese Operatoren kann somit ein seitenweises Datenladen (paging) realisiert werden.

Übersicht möglicher Operatoren (Expression Operators)

Ausdruck (EN) Verwendung Beschreibung
Not not x logisches NICHT
And x and y logisches UND
Or x or y logisches ODER
Multiply x mul y Multiplikation
Divide x div y Division
Modulo x mod y Modulo Operation. Beispiel: Wert mod 2 eq 0
Add x add y Addition Operator. Beispiel Wert add 1 eq 2
Subtract x sub y Subtraktion Operator. Beispiel: Wert sub 1 eq 2
Less x lt 7 Kleiner als Vergleich. Beispiel: Wert lt 7
Less or equal x le 10 Kleiner oder gleich Vergleich. Beispiel: Wert le 10
Greater x gt 9 Greater t Werthan operator. Beispiel: Wert gt 9
Greater or equal x ge 5 Greater or equal operator. Beispiel: Wert ge 5
Equal x eq 1 Gleich (=) Auswertung. Beispiel: Wert Id eq 1 
Not equal x ne 18 Nicht gleich Auswertung. Beispiel: Wert ne 18

Übersicht möglicher Ausdrücke (Filter Expression)

Methode Verwendung Beschreibung
endswith
endswith(x,y) Gibt an, ob der erste Parameter mit dem zweiten Parameter endet (Groß- und Kleinschreibung wird nicht berücksichtigt), z. B. endet mit (Titel,’1.1′)
indexof indexof(x,y) Gibt den nullbasierten Index des zweiten Parameters innerhalb des ersten Parameters zurück, z. B. indexof(Title,’1.1′) eq 0
startswith startswith(x,y) Gibt an, ob der erste Parameter mit dem zweiten Parameter beginnt (ohne Berücksichtigung der Groß-/Kleinschreibung), z. B. beginnt mit(Titel,’1.1′)
tolower tolower(x) Gibt den ersten in Kleinbuchstaben umgewandelten Parameter zurück, z.B. tolower(Title) eq ‚test‘
toupper toupper(x) gibt den ersten in Großbuchstaben umgewandelten Parameter zurück, z.B. toupper(Title) eq ‚TEST‘
trim trim(x) Gibt den ersten Parameter ohne alle führenden/nachgestellten Leerzeichen zurück, z. B. trim(Title) eq ‚Test‘
substring substring(x,y) Gibt die Teilzeichenfolge des ersten Parameters zurück, beginnend beim nullbasierten Index des zweiten Parameters, z. B. substring(Title,5) eq ‚Item 1‘
substringof substringof(x,y) Gibt true zurück, wenn der zweite Parameter den ersten Parameter enthält, z. B. substringof(‘test item’,Title)
concat concat(x,y,z) Gibt die Verkettung der Parameter in der aufgeführten Reihenfolge zurück, z.B. concat('A:',Title) eq 'A:Title'
length length(x) Gibt die Länge des ersten Parameters zurück, z.B. Länge(Titel) gt 10
year year(x) Gibt die Jahreskomponente des ersten Parameters zurück, z. B. Jahr(Erstellt) eq 2013
month month(x) Gibt die Monatskomponente des ersten Parameters zurück, z. B. Monat (Erstellt) Gleichung 12
day day(x) Gibt die Tageskomponente des ersten Parameters zurück, z.B. Tag (Erstellt) Gleichung 31
hour hour(x) Gibt die Stundenkomponente des ersten Parameters zurück, z. B. Stunde(Erstellt) Gleichung 12
minute minute(x) Gibt die Minuten Komponente des ersten Parameters zurück, z.B. Minute(Erstellt) eq 20
second second(x) Gibt die Sekunden des ersten Parameters zurück.
round round(x) Gibt den nächsten ganzzahligen Wert des ersten Parameters zurück.
floor Boden(x) Gibt den größten Integralwert zurück, der kleiner oder gleich dem ersten Parameter ist.
ceiling ceiling(x) gibt den kleinsten Integralwert zurück, der größer oder gleich dem ersten Parameter ist.

Übersicht Literaler Ausdrücke (Expression Literal Values)

Literal Beschreibung
String Ein Zeichenketten Literal. Beispiel Title eq 'Mustermann'
DateTime Ein Datum/Zeit Literal. Beispiel datetime'2023-09-25T11:11:48Z' oder datetime'2023-08-19'
GUID Eine eindeutiges GUID Literal. Beispiel guid'1885c675-cfa8-4ebb-bbba-90da355e2a6a'
Null Ein Literal Audruck für den Vergleich auf null. Beispiel Title ne null
Boolean Boolean Literal. Beispiel Flag eq true

Eine vollständige Übersicht über die SharePoint REST-Dienste findet man im Artikel: Get to know the SharePoint REST service

Kommentare

Beliebte Posts aus diesem Blog

Connect-SPOService: The remote server returned an error: (400) Bad Request

Exchange Online: Schutzregel für E-Mail Weiterleitung

SharePoint Online: Optimale Bildgrößen für Seiten (Teil 1)