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