Książka kucharka wyrażeń dla przepływów chmury

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)

Uwaga: autor utworzył ten artykuł z pomocą sztucznej inteligencji. Dowiedz się więcej