Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano 30 gotowych do użycia wzorców wyrażeń dla typowych scenariuszy w przepływach Power Automate w chmurze. Możesz kopiować, dostosowywać i używać tych wzorców w przepływach.
Uwaga / Notatka
Te wyrażenia działają we wszystkich warstwach licencji przepływu w chmurze Power Automate. Znajdź pełną dokumentację funkcji w funkcjach wyrażeń przepływu pracy.
Operacje tekstowe
1. Przekonwertuj na wielkie lub małe litery
Scenariusz: Normalizacja danych wejściowych użytkownika przed porównaniem lub magazynem.
Wyrażenie: toUpper(variables('input')) lub toLower(variables('input'))
Przykład: toLower('John.Smith@Contoso.COM') zwraca john.smith@contoso.com
Important
toUpper() uwzględnia wielkość liter w przypadku użycia w porównaniach. Jeśli używasz metody toUpper(A) = B, upewnij się, że stosujesz ją do obu stron.
toUpper(A) = B kończy się niepowodzeniem, jeśli B jest mieszanym przypadkiem.
2. Wyodrębnij podciąg (lewy, prawy, środkowy)
Scenariusz: ściąganie określonej części z wartości tekstowej. Pobierz pierwsze N znaków, ostatnie N lub zakres od środka.
Wyrażenie:
- Lewej:
substring(variables('text'), 0, 5) - Prawy:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Połowie:
substring(variables('text'), 3, 4)
Przykład: substring('Invoice-2026-0042', 8, 4) zwraca 2026
Tip
Drugi parametr to indeks początkowy (oparty na 0), trzeci to długość, a nie indeks końcowy.
substring('ABCDE', 1, 3) zwraca BCDwartość , a nie BC.
3. Zamień tekst
Scenariusz: Czyszczenie lub przekształcanie wartości tekstowych. Usuń znaki, ograniczniki wymiany, popraw formatowanie.
Wyrażenie: replace(variables('input'), 'old', 'new')
Przykład: replace('2026/03/18', '/', '-') zwraca 2026-03-18
Uwaga / Notatka
replace() uwzględnia wielkość liter.
replace('Hello', 'hello', 'Hi') zwraca Hello wartość bez zmian. W razie potrzeby przekonwertuj na typowy przypadek.
4. Podziel ciąg na tablicę
Scenariusz: Podziel rozdzieloną wartość (CSV, wiadomości e-mail rozdzielane średnikami) na poszczególne elementy do pętli.
Wyrażenie: split(variables('input'), ',')
Przykład: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') zwraca ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tip
Spacje po ograniczniku są zachowywane.
split('a, b, c', ',') zwraca wartość ["a"," b"," c"] z spacjami wiodącymi. Użyj trim() dla każdego elementu w akcji Wybierz później.
5. Łączenie z podziałami wierszy (w przypadku wiadomości e-mail)
Scenariusz: Tworzenie treści komunikatów wielowierszowych na potrzeby powiadomień e-mail lub aplikacji Teams.
Wyrażenie: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Example: Użyj decodeUriComponent('%0A') dla nowego wiersza lub decodeUriComponent('%0D%0A') dla podziałów linii w stylu Windows.
Important
Użycie \n bezpośrednio w wyrażeniach nie powoduje utworzenia podziału wiersza. Zwraca on znaki \nliterału . Zawsze używaj decodeUriComponent podejścia lub użyj <br> polecenia , jeśli dane wyjściowe to HTML.
6. Sprawdzanie, czy ciąg zawiera tekst
Scenariusz: kierowanie przepływu na podstawie tego, czy wiersz tematu, treść wiadomości e-mail lub pole zawiera słowo kluczowe.
Wyrażenie: contains(toLower(triggerBody()?['subject']), 'urgent')
Przykład: contains('Project Alpha Review', 'Alpha') zwraca true
Uwaga / Notatka
contains() uwzględnia wielkość liter. Zawsze owijaj zarówno stos siana, jak i igłę w toLower() celu dopasowania bez uwzględniania wielkości liter: contains(toLower(value), toLower(search)).
Data i godzina
7. Pobieranie bieżącej daty/godziny w określonym formacie
Scenariusz: sygnatura nazwy pliku, wpisu dziennika lub wiadomości e-mail z bieżącą datą i godziną.
Wyrażenie: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Przykład: Zwraca 2026-03-18 14:30 (UTC). Użyj dla convertTimeZone() czasu lokalnego.
Tip
utcNow() jest zawsze utc. W przypadku czasu lokalnego należy połączyć łańcuch z ciągiem convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Dodawanie lub odejmowanie dni od daty
Scenariusz: oblicz datę ukończenia, wygaśnięcie lub datę przypomnienia względem dnia dzisiejszego.
Wyrażenie: addDays(utcNow(), 7) lub addDays(utcNow(), -30)
Przykład: Jeśli dzisiaj to 2026-03-18, addDays(utcNow(), 7) zwraca wartość 2026-03-25T...Z
Uwaga / Notatka
addDays() Akceptuje również wartości ułamkowe, ale addHours() lub addMinutes() są jaśniejsze dla przesunięć podrzędnych dni. Nie używaj addDays(utcNow(), 0.5) funkcji , jeśli chodzi o addHours(utcNow(), 12).
9. Konwertowanie ciągu na datę (analizowanie)
Scenariusz: Pole tekstowe zawiera datę podobną 03/18/2026 do daty i musisz jej używać w funkcjach daty.
Wyrażenie: parseDateTime(variables('dateString'), 'en-US')
Przykład: parseDateTime('03/18/2026', 'en-US') zwraca odpowiednią wartość daty/godziny.
Important
Bez parametru ustawień regionalnych analizowanie zależy od ustawień regionalnych przepływu i może zamienić miesiąc/dzień. Zawsze należy jawnie określić ustawienia regionalne, aby uniknąć 03/04/2026 interpretowania ich jako 3 kwietnia a 4 marca.
10. Pobierz dzień tygodnia
Scenariusz: Uruchom inną logikę w dni robocze a weekendy lub wygeneruj "raport w poniedziałek".
Wyrażenie: dayOfWeek(utcNow())
Przykład: zwraca 0 wartość dla niedzieli, 1 dla poniedziałku, ..., 6 dla soboty.
Tip
Niedziela to 0, a nie 7. Służy or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) do sprawdzania weekendów. Warunek jak dayOfWeek(utcNow()) > 5 łapie sobotę, ale brakuje niedzielę.
11. Oblicz różnicę między dwiema datami
Scenariusz: określ, ile dni upłynęło między datą żądania a datą ukończenia.
Wyrażenie: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Przykład: Jeśli początek to 2026-03-01 i koniec to 2026-03-18, zwraca wartość 17.
Uwaga / Notatka
Nie ma wbudowanej dateDiff() funkcji. Należy użyć podejścia kleszczy. Dzielnika 864000000000 konwertuje kleszcze na dni. W ciągu godzin użyj ciągu 36000000000; w minutach użyj polecenia 600000000.
12. Formatowanie daty wyświetlania
Scenariusz: Konwertowanie wartości daty/godziny na format czytelny dla człowieka dla wiadomości e-mail lub raportów.
Wyrażenie: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') lub formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Przykład: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') zwraca March 18, 2026
Important
MM to miesiące, mm to minuty.
formatDateTime(value, 'mm/DD/yyyy') program tworzy 30/18/2026 (minuty i dzień) zamiast 03/18/2026. Użyj dd (małych liter) dla dnia miesiąca.
Tablice i kolekcje
13. Filtrowanie tablicy według warunku
Scenariusz: pobierz tylko elementy z tablicy, które pasują do określonego kryterium.
Wyrażenie: użyj akcji Filtruj tablicę z: @item()?['Status'] jest równa 'Active'
Przykład: Zwracane dane wejściowe [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]
Uwaga / Notatka
Nie można użyć wyrażenia filtru wherestylu w tekście. Użyj akcji Filtruj tablicę (a nie wyrażenia). W przypadku filtrowania opartego na wyrażeniach użyj polecenia @equals(item()?['Status'], 'Active') w trybie zaawansowanym filtru tablicy.
14. Pobieranie pierwszego lub ostatniego elementu z tablicy
Scenariusz: pobieranie najnowszego rekordu lub pierwszego dopasowania z listy.
Wyrażenie: first(variables('myArray')) lub last(variables('myArray'))
Example: first(body('Get_items')?['value']) zwraca pierwszy element z zapytania SharePoint.
Tip
first() w pustej tablicy zwraca nullwartość , a nie błąd. Zawsze postępuj zgodnie z sprawdzaniem wartości null: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Zlicz elementy w tablicy
Scenariusz: Sprawdź, ile wyników zwróciło zapytanie, lub sprawdź, czy lista ma wystarczającą liczbę elementów.
Wyrażenie: length(variables('myArray'))
Example: length(body('Get_items')?['value']) zwraca liczbę elementów z zapytania SharePoint list.
Uwaga / Notatka
length() działa zarówno na tablicach, jak i ciągach.
length('hello') zwraca 5 (liczba znaków). Upewnij się, że przekazujesz tablicę, a nie ciąg, który wygląda jak tablica.
16. Tworzenie ciągu rozdzielanego przecinkami z tablicy (sprzężenia)
Scenariusz: przekonwertuj listę nazw, wiadomości e-mail lub identyfikatorów na jeden rozdzielany ciąg do wyświetlania lub wywołania interfejsu API.
Wyrażenie: join(variables('myArray'), ', ')
Przykład: join(createArray('Alice', 'Bob', 'Carol'), '; ') zwraca Alice; Bob; Carol
Tip
join() działa na tablicach ciągów. Jeśli tablica zawiera obiekty, najpierw użyj akcji Wybierz , aby wyodrębnić żądane pole, a następnie dołącz wynik.
17. Sprawdź, czy tablica zawiera wartość
Scenariusz: określ, czy określony element istnieje na liście przed kontynuowaniem.
Wyrażenie: contains(variables('myArray'), 'searchValue')
Przykład: contains(createArray('North', 'South', 'East', 'West'), 'East') zwraca true
Uwaga / Notatka
W przypadku tablic obiektów contains() sprawdza cały obiekt, a nie wartość właściwości. Aby sprawdzić, czy dowolny obiekt ma zgodną właściwość, użyj akcji Filtr tablicy, a następnie sprawdź length() wynik.
JSON i obiekty
18. Analizowanie ciągu JSON
Scenariusz: Akcja HTTP lub łącznik niestandardowy zwraca ciąg JSON, z którym trzeba pracować jako dane ustrukturyzowane.
Wyrażenie: json(body('HTTP'))
Przykład: json('{"name":"Alice","age":30}') zwraca obiekt, do którego można uzyskać dostęp za pomocą polecenia ?['name'].
Important
Nie analizuj dwukrotnie. Jeśli akcja zwraca już przeanalizowany kod JSON (większość akcji łącznika wykonuje), zawijanie go ponownie json() powoduje błąd. Używaj json() tylko w nieprzetworzonych odpowiedziach ciągów, a nie na danych wyjściowych akcji, które są już obiektami.
19. Pobierz właściwość zagnieżdżona z formatu JSON
Scenariusz: uzyskiwanie dostępu do wartości głęboko wewnątrz odpowiedzi JSON, na przykład response.data.items[0].name.
Wyrażenie: body('HTTP')?['data']?['items']?[0]?['name']
Przykład: w przypadku {"data":{"items":[{"name":"Widget"}]}}metody zwraca wartość Widget.
Important
Nie zapomnij ? o (bezpiecznej nawigacji).
body('HTTP')['data']['items'] zgłasza błąd, jeśli dowolny poziom ma wartość null. Zawsze używaj ?['key'] polecenia , aby bezpiecznie przechodzić: każda z nich ? zwraca wartość null, a nie kończy się niepowodzeniem, jeśli brakuje elementu nadrzędnego.
20. Tworzenie obiektu JSON na podstawie wartości
Scenariusz: Utwórz treść żądania dla akcji HTTP ze zmiennych przepływu i zawartości dynamicznej.
Wyrażenie: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Przykład: Z nazwą =Alice i status=Active, zwraca wartość {"name":"Alice","status":"Active"}.
Tip
Jeśli dowolna zmienna zawiera cudzysłowy lub znaki specjalne, kod JSON będzie źle sformułowany. Aby wykonać solidną konstrukcję, użyj akcji createObject('name', variables('name'), 'status', variables('status')) lub skompiluj ją bezpośrednio w akcji Redaguj.
21. Konwertowanie obiektu na ciąg
Scenariusz: Rejestrowanie obiektu JSON w polu tekstowym lub przekazywanie danych ustrukturyzowanych jako parametr ciągu.
Wyrażenie: string(variables('myObject'))
Przykład: string(json('{"a":1}')) zwraca {"a":1} jako ciąg.
Uwaga / Notatka
string() na tablicy lub obiekcie tworzy kompaktowy kod JSON (nie ma dość drukowania). Nie ma wbudowanego pliku prettyPrint(). Ręcznie zaakceptuj kompaktowy format JSON lub skompilowany tekst sformatowany.
22. Bezpieczne obsługa wartości null lub pustych
Scenariusz: Zapobiegaj błędom, gdy pole może mieć wartość null, jest puste lub brakuje go całkowicie.
Wyrażenie: coalesce(triggerBody()?['optionalField'], 'default value')
Przykład: jeśli optionalField ma wartość null, zwraca wartość 'default value'. Jeśli ma wartość, zwraca ją.
Important
coalesce() obsługuje tylko ciągi null, a nie puste. W przypadku pustych ciągów połącz się z warunkiem: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funkcja empty() zwraca wartość true zarówno dla ciągu null, jak i pustego ''.
Liczby i matematyka
23. Zaokrąglij liczbę
Scenariusz: Wyświetl wartość procentową lub walutę z stałą liczbą miejsc dziesiętnych.
Wyrażenie: formatNumber(variables('value'), 'N2') (w przypadku wyświetlania) lub div(mul(variables('value'), 100), 100) (w przypadku obcinania)
Przykład: formatNumber(3.14159, 'N2') zwraca 3.14 jako ciąg.
Uwaga / Notatka
formatNumber() zwraca ciąg, a nie liczbę. Jeśli musisz wykonać dalszą matematykę na zaokrąglonej wartości, przeanalizuj ją z powrotem: float(formatNumber(variables('value'), 'N2')).
24. Konwertowanie ciągu na liczbę (i z powrotem)
Scenariusz: formularz lub wiadomość e-mail zawiera liczbę jako tekst i musisz wykonać z nią matematykę.
Wyrażenie: int(variables('textNumber')) lub float(variables('textNumber')) i string(variables('numericValue'))
Przykład: int('42') zwraca wartość 42.
float('3.14') zwraca wartość 3.14.
string(42) zwraca wartość '42'.
Important
int() w ciągu dziesiętnym zgłasza błąd; nie obcina się. Jeśli zmienna może zawierać wartość dziesiętną, użyj float() najpierw: int(float(variables('input'))). W przypadku wartości stałych, takich jak int('3.14'), błąd jest przechwytywane w czasie zapisywania (InvalidTemplate), a nie w czasie wykonywania.
25. Oblicz wartość procentową
Scenariusz: pokaż, jaka jest jedna wartość ułamkowa innej (na przykład współczynnik ukończenia, wykorzystanie).
Wyrażenie: mul(div(float(variables('part')), float(variables('total'))), 100)
Przykład: Ze częścią=75 i total=200, zwraca wartość 37.5.
Important
Dzielenie całkowite obcinane.
div(75, 200) funkcja zwraca 0 wartość , ponieważ obie są liczbami całkowitymi. Zawsze konwertuj na zmiennoprzecinkowy najpierw: div(float(75), float(200)) zwraca wartość 0.375.
Warunkowe i logika
26. If/then/else w wyrażeniu
Scenariusz: Zwracanie różnych wartości na podstawie warunku bez dodawania akcji Warunek do przepływu.
Wyrażenie: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Przykład: jeśli stan to Approved, zwraca wartość Proceed. W przeciwnym razie zwraca wartość Wait.
Uwaga / Notatka
Funkcja if() nie obsługuje >bezpośrednio operatorów . < Użyj funkcji pomocnika: if(greater(variables('count'), 10), 'Over', 'Under'). Dostępne porównania: equals(), , greater()less(), greaterOrEquals(), lessOrEquals().
27. Łączenie (pierwsza wartość niepusta)
Scenariusz: spróbuj użyć wielu pól i użyj pierwszego, który ma wartość, na przykład preferowaną nazwę, nazwę wyświetlaną, adres e-mail.
Wyrażenie: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Przykład: Jeśli preferredName ma wartość null, a właściwość displayName to 'Alice', zwraca wartość Alice.
Tip
coalesce()
null pomija, ale nie puste ciągi ''. Pusty ciąg jest prawidłową wartością inną niż null. Połącz z pomocnikiem, jeśli należy również pominąć puste ciągi: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Sprawdź, czy wartość ma wartość null, czy jest pusta
Scenariusz: Sprawdź, czy wymagane pole ma wartość do użycia przed przetworzeniem.
Wyrażenie: empty(variables('input'))
Przykład: empty('') zwraca wartość true.
empty(null) zwraca wartość true.
empty('hello') zwraca wartość false.
Important
empty() nie działa na liczbach.
empty(0) zgłasza błąd. W przypadku liczb użyj equals(variables('num'), null) lub najpierw sprawdź typ.
29. Porównaj daty (czy data A po dacie B?)
Scenariusz: Sprawdź, czy upłynął termin lub czy jedno zdarzenie miało miejsce przed innym.
Wyrażenie: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Przykład: greater(ticks('2026-03-18'), ticks('2026-03-15')) zwraca wartość true (18 marca jest późniejsza niż 15 marca).
Important
Porównywanie ciągów dat bezpośrednio z greater('2026-03-18', '2026-03-15') odbywa się w przypadku formatu ISO (RRRR-MM-DD), ponieważ sortuje leksykograficznie. Ale kończy się to niepowodzeniem w przypadku innych formatów.
greater('03/18/2026', '12/01/2025')funkcja zwraca wartość false , ponieważ0<1 . Zawsze używaj ticks() funkcji do porównywania niezawodnych dat.
30. Logika logiczna (AND/OR w warunkach)
Scenariusz: Połącz wiele warunków w jednym wyrażeniu, na przykład zatwierdzonym i 1000.>
Wyrażenie: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Przykład: zwraca true tylko wtedy, gdy stan jest równy Approved i ilość jest większa niż 1000.
Uwaga / Notatka
Nie można połączyć łańcuchem and/or ze składnią &&/|| . Zawsze używaj formularza funkcji. W przypadku złożonej logiki zagnieżdżaj je: or(and(A, B), and(C, D)). Czytelność ulega pogorszeniu dzięki głębokiemu zagnieżdżaniu. Rozważ użycie akcji Warunek z wieloma wierszami.
Karta szybkich odwołań
| Zadanie | Wyrażenie |
|---|---|
| Duże litery | toUpper(value) |
| Małe litery | toLower(value) |
| Podciąg | substring(value, start, length) |
| Zamień | replace(value, old, new) |
| Podział | split(value, delimiter) |
| Zawiera (tekst) | contains(toLower(value), toLower(search)) |
| Teraz (sformatowane) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Dodaj dni | addDays(date, count) |
| Dzień tygodnia |
dayOfWeek(date) (0=Słońce) |
| Dni między | div(sub(ticks(end), ticks(start)), 864000000000) |
| Pierwszy element | first(array) |
| Ostatni element | last(array) |
| Zliczanie | length(array) |
| Dołączyć | join(array, delimiter) |
| Przeanalizuj dane JSON | json(stringValue) |
| Bezpieczna właściwość | object?['key'] |
| Powrót o wartości null | coalesce(value, default) |
| Jest puste | empty(value) |
| If/else | if(condition, trueVal, falseVal) |
| Porównywanie dat | greater(ticks(dateA), ticks(dateB)) |
| Int z ciągu | int(stringValue) |
| Zmiennoprzecinkowy z ciągu | float(stringValue) |
| AND | and(condA, condB) |
| OR | or(condA, condB) |
Informacje pokrewne
- Referencja kodu błędu przepływu w chmurze
- Rozwiązywanie problemów z błędami przepływu w chmurze
- Używanie wyrażeń w warunkach
- Dokumentacja funkcji wyrażeń przepływu pracy
- Limity i konfiguracja Power Automate
Uwaga: autor utworzył ten artykuł z pomocą sztucznej inteligencji. Dowiedz się więcej