Expression cookbook for cloud flows

Šiame straipsnyje aiškinama 30 paruoštų naudoti reiškinių šablonų, skirtų įprastiems scenarijams Power Automate debesies srautuose. Galite kopijuoti, pritaikyti ir naudoti šiuos modelius srautuose.

Pastaba.

Šios išraiškos veikia visose Power Automate debesies srauto licencijų pakopose. Darbo eigos išraiškos funkcijose raskite visą funkcijos nuorodą.

Teksto operacijos

1. Konvertuoti į didžiąsias arba mažąsias raides

Scenarijus: normalizuokite vartotojo įvestį prieš palyginimą arba saugojimą.

Išraiška: toUpper(variables('input')) arba toLower(variables('input'))

Pavyzdys: toLower('John.Smith@Contoso.COM') grąžinimas john.smith@contoso.com

Svarbu

toUpper() skiria didžiąsias ir mažąsias raides, kai naudojama palyginimuose. Jei naudojate toUpper(A) = B, įsitikinkite, kad ją pritaikote abiejose pusėse. toUpper(A) = B neveikia, jei B yra mišrus atvejis.

2. Išskleisti dalinę eilutę (kairėje, dešinėje, viduryje)

Scenarijus: ištraukite konkrečią teksto reikšmės dalį. Gaukite pirmus N simbolius, paskutinius N arba diapazoną nuo vidurio.

Išraiška:

  • Į kairę: substring(variables('text'), 0, 5)
  • Į dešinę: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Vidurio: substring(variables('text'), 3, 4)

Pavyzdys: substring('Invoice-2026-0042', 8, 4) grąžinimas 2026

Arbatpinigiai

Antrasis parametras yra pradžios indeksas (0 pagrįstas), trečiasis – ilgis, o ne pabaigos indeksas. substring('ABCDE', 1, 3) grąžina BCD, o ne BC.

3. Teksto keitimas

Scenarijus: teksto reikšmių valymas arba keitimas. Pašalinkite simbolius, sukeiskite skyriklius, pataisykite formatavimą.

Išraiška: replace(variables('input'), 'old', 'new')

Pavyzdys: replace('2026/03/18', '/', '-') grąžinimas 2026-03-18

Pastaba.

replace() skiria didžiąsias ir mažąsias raides. replace('Hello', 'hello', 'Hi') grąžinama Hello nepakitusi. Pirmiausia, jei reikia, konvertuokite į bendrąjį atvejį.

4. Išskaidykite eilutę į masyvą

Scenarijus: atskirti atskirtąją reikšmę (CSV, kabliataškiais atskirtus el. laiškus) į atskirus elementus, kad būtų galima cikluoti.

Išraiška: split(variables('input'), ',')

Pavyzdys: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') grąžinimas ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]

Arbatpinigiai

Išsaugomi tarpai po skyriklio. split('a, b, c', ',') grįžta ["a"," b"," c"] su priekiniais tarpais. Naudoti trim() kiekvienam veiksmo Pasirinkti elementui po to.

5. Sujungimas su eilučių lūžiais (el. Laiškams)

Scenarijus: sukurkite kelių eilučių pranešimo tekstą el. paštui arba "Teams" pranešimams.

Išraiška: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')

Example: naudokite decodeUriComponent('%0A') naujai eilutei arba decodeUriComponent('%0D%0A') Windows stiliaus eilučių lūžiams.

Svarbu

Naudojant \n tiesiogiai reiškiniuose, eilutės lūžis nesukuria. Jis išveda raidinius simbolius \n. Visada naudokite decodeUriComponent metodą arba naudokite <br> , jei išvestis yra HTML.

6. Patikrinkite, ar eilutėje yra teksto

Scenarijus: nukreipti srautą atsižvelgiant į tai, ar temos eilutėje, el. laiško tekste ar lauke yra raktinis žodis.

Išraiška: contains(toLower(triggerBody()?['subject']), 'urgent')

Pavyzdys: contains('Project Alpha Review', 'Alpha') grąžinimas true

Pastaba.

contains() skiria didžiąsias ir mažąsias raides. Visada suvyniokite ir šieno dėdę, ir adatą toLower() , kad atitiktų nejautrų atvejį: contains(toLower(value), toLower(search)).

Data ir laikas

7. Gauti dabartinę datą / laiką konkrečiu formatu

Scenarijus: pažymėkite failo vardą, žurnalo įrašą arba el. laišką su dabartine data ir laiku.

Išraiška: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')

Pavyzdys: pateikia 2026-03-18 14:30 (UTC). Naudokite convertTimeZone() vietiniam laikui.

Arbatpinigiai

utcNow() visada yra UTC. Vietiniam laikui, grandinė su convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').

8. Dienų pridėjimas arba atėmimas iš datos

Scenarijus: suskaičiuokite termino datą, galiojimo pabaigos datą arba priminimo datą, susijusią su šiandiena.

Išraiška: addDays(utcNow(), 7) arba addDays(utcNow(), -30)

Pavyzdys: Jei šiandien yra 2026-03-18, addDays(utcNow(), 7) pateikia 2026-03-25T...Z

Pastaba.

addDays() taip pat priima trupmenines reikšmes, bet addHours() arba addMinutes() yra aiškesnės antrinių dienų poslinkiams. Nenaudokite addDays(utcNow(), 0.5) , kai norite pasakyti addHours(utcNow(), 12).

9. Konvertuoti eilutę į datą (sintaksė)

Scenarijus: teksto lauke yra data, panaši 03/18/2026 į ir ją reikia naudoti datos funkcijose.

Išraiška: parseDateTime(variables('dateString'), 'en-US')

Pavyzdys: parseDateTime('03/18/2026', 'en-US') pateikia tinkamą datetime reikšmę.

Svarbu

Be lokalės parametro analizė priklauso nuo srauto regiono parametrų ir gali sukeisti mėnesį / dieną. Visada nurodykite lokalę, kad nebūtų 03/04/2026 interpretuojama kaip balandžio 3 d. ir kovo 4 d.

10. Gaukite savaitės dieną

Scenarijus: darbo dienomis ir savaitgaliais vykdykite kitokią logiką arba sugeneruokite pirmadienio ataskaitą.

Išraiška: dayOfWeek(utcNow())

Pavyzdys: pateikia 0 sekmadieniui, 1 pirmadienį, ..., 6 šeštadieniui.

Arbatpinigiai

Sekmadienis yra 0, ne 7. Naudokite or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) savaitgalio patikrinimams. Sąlyga, pvz., dayOfWeek(utcNow()) > 5 gaudo šeštadienį, bet praleidžia sekmadienį.

11. Skirtumo tarp dviejų datų apskaičiavimas

Scenarijus: nustatykite, kiek dienų praėjo nuo užklausos datos iki baigimo datos.

Išraiška: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)

Pavyzdys: Jei pradžia yra 2026-03-01 , o pabaiga yra 2026-03-18, pateikia 17.

Pastaba.

Nėra įtaisytosios dateDiff() funkcijos. Turite naudoti erkių metodą. Daliklis 864000000000 konvertuoja erkes į dienas. Valandoms naudokite 36000000000; minutėms naudokite 600000000.

12. Rodymo datos formatavimas

Scenarijus: konvertuokite datos ir laiko reikšmę į žmonėms perskaitomą el. laiškų arba ataskaitų formatą.

Išraiška: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') arba formatDateTime(variables('myDate'), 'MM/dd/yyyy')

Pavyzdys: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') grąžinimas March 18, 2026

Svarbu

MM yra mėnesiai, mm minutės. formatDateTime(value, 'mm/DD/yyyy') 30/18/2026 (minutes ir dieną), o ne 03/18/2026. Naudokite dd (mažosiomis raidėmis) mėnesio dieną.

Masyvai ir rinkiniai

13. Masyvo filtravimas pagal sąlygą

Scenarijus: gaukite tik elementus iš masyvo, kuris atitinka konkretų kriterijų.

Išraiška: naudokite veiksmą Filtruoti masyvą su: @item()?['Status'] lygu 'Active'

Pavyzdys: įvesties grąžinimai [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]

Pastaba.

Įdėtojo wherestiliaus filtro išraiškos naudoti negalima. Naudokite veiksmą Filtruoti masyvą (ne išraišką). Norėdami filtruoti pagal reiškinį, naudokite @equals(item()?['Status'], 'Active') išplėstinį filtro masyvo režimą.

14. Gauti pirmą arba paskutinį elementą iš masyvo

Scenarijus: gaukite naujausią įrašą arba pirmąjį atitikmenį iš sąrašo.

Išraiška: first(variables('myArray')) arba last(variables('myArray'))

Example: first(body('Get_items')?['value']) grąžina pirmąjį elementą iš SharePoint užklausos.

Arbatpinigiai

first() tuščio masyvo grąžinama null, o ne klaida. Visada vykdyti su neapibrėžta patikra: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Skaičiuoti masyvo elementus

Scenarijus: patikrinkite, kiek rezultatų pateikė užklausa, arba patikrinkite, ar sąraše yra pakankamai elementų.

Išraiška: length(variables('myArray'))

Example: length(body('Get_items')?['value']) pateikia elementų skaičių iš SharePoint list užklausos.

Pastaba.

length() veikia ir masyvuose, ir eilutėse. length('hello') grąžina 5 (simbolių skaičius). Įsitikinkite, kad perduodate masyvą, o ne eilutę, kuri atrodo kaip masyvas.

16. Sukurkite kableliais atskirtą eilutę iš masyvo (sujungimo)

Scenarijus: vardų, el. laiškų arba ID sąrašą konvertuokite į vieną atskirtą eilutę, skirtą rodyti arba API iškvietimui.

Išraiška: join(variables('myArray'), ', ')

Pavyzdys: join(createArray('Alice', 'Bob', 'Carol'), '; ') grąžinimas Alice; Bob; Carol

Arbatpinigiai

join() veikia su eilučių masyvais. Jei masyve yra objektų, pirmiausia naudokite veiksmą Pasirinkti , kad išskleistumėte norimą lauką, tada sujunkite rezultatą.

17. Patikrinkite, ar masyve yra reikšmė

Scenarijus: prieš tęsdami nustatykite, ar sąraše yra konkretus elementas.

Išraiška: contains(variables('myArray'), 'searchValue')

Pavyzdys: contains(createArray('North', 'South', 'East', 'West'), 'East') grąžinimas true

Pastaba.

Objektų masyvuose tikrinamas visas objektas contains() , o ne ypatybės reikšmė. Norėdami patikrinti, ar kuris nors objektas turi atitinkančią ypatybę, naudokite veiksmą Filtruoti masyvą ir patikrinkite length() rezultatą.

JSON ir objektai

18. Analizuoti JSON eilutę

Scenarijus: HTTP veiksmas arba pasirinktinė jungtis pateikia JSON eilutę, kurią reikia naudoti kaip struktūrinius duomenis.

Išraiška: json(body('HTTP'))

Pavyzdys: json('{"name":"Alice","age":30}') pateikia objektą, kurį galite pasiekti naudodami ?['name'].

Svarbu

Neanalizuokite du kartus. Jei veiksmas jau pateikia analizuojamą JSON (atlieka dauguma jungties veiksmų), keliant jį json() vėl įvyksta klaida. Naudokite json() tik neapdorotuose eilutės atsakymuose, o ne veiksmo išvestyse, kurios jau yra objektai.

19. Gauti įdėtąsias ypatybes iš JSON

Scenarijus: pasiekite reikšmę giliai JSON atsakyme, pvz., response.data.items[0].name.

Išraiška: body('HTTP')?['data']?['items']?[0]?['name']

Pavyzdys: For {"data":{"items":[{"name":"Widget"}]}}, returns Widget.

Svarbu

Nepamirškite ? (saugus naršymas). body('HTTP')['data']['items'] įvyksta klaida, jei kuris nors lygis yra nulinis. Visada naudokite ?['key'] , kad saugiai naršytumėte: kiekvienas ? pateikia nulį, o ne ydingą, jei trūksta pirminio elemento.

20. Kurti JSON objektą iš reikšmių

Scenarijus: sukurkite HTTP veiksmo užklausos tekstą iš srauto kintamųjų ir dinaminio turinio.

Išraiška: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))

Pavyzdys: Su name=Alice ir status=Active, pateikia {"name":"Alice","status":"Active"}.

Arbatpinigiai

Jei kintamajame yra kabučių ar specialiųjų simbolių, JSON bus blogai suformuotas. Norėdami sukurti patikimą konstrukciją, naudokite veiksmą Kurti su createObject('name', variables('name'), 'status', variables('status')) arba tiesiogiai sukurkite jį kūrimo veiksme.

21. Konvertuoti objektą į eilutę

Scenarijus: užregistruokite JSON objektą į teksto lauką arba perduokite struktūrinius duomenis kaip eilutės parametrą.

Išraiška: string(variables('myObject'))

Pavyzdys: string(json('{"a":1}')) pateikia {"a":1} kaip eilutę.

Pastaba.

string() masyve ar objekte sukuria kompaktišką JSON (nėra gražaus spausdinimo). Nėra įtaisytųjų prettyPrint(). Suglaudintą JSON arba komponavimo versiją suformatuotą tekstą priimkite rankiniu būdu.

22. Saugiai tvarkykite nulines arba tuščias reikšmes

Scenarijus: išvengti klaidų, kai laukas gali būti neapibrėžtas, tuščias arba visiškai jo nėra.

Išraiška: coalesce(triggerBody()?['optionalField'], 'default value')

Pavyzdys: If optionalField is null, returns 'default value'. Jei ji turi reikšmę, grąžina tą reikšmę.

Svarbu

coalesce() tik tvarko null, o ne tuščias eilutes. Tuščių eilučių atveju sujunkite su sąlyga: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funkcija empty() pateikia teisingą tiek nulinės, tiek tuščios eilutės reikšmę ''.

Skaičiai ir matematika

23. Skaičiaus apvalinimas

Scenarijus: rodyti procentinę arba valiutos reikšmę su fiksuotu dešimtainių skilčių skaičiumi.

Išraiška: formatNumber(variables('value'), 'N2') (rodoma) arba div(mul(variables('value'), 100), 100) (sutrumpinti)

Pavyzdys: formatNumber(3.14159, 'N2') pateikia 3.14 kaip eilutę.

Pastaba.

formatNumber() pateikia eilutę, o ne skaičių. Jei reikia atlikti daugiau matematinių veiksmų su suapvalinta reikšme, analizuokite ją: float(formatNumber(variables('value'), 'N2')).

24. Konvertuoti eilutę į skaičių (ir atgal)

Scenarijus: forma arba el. laiškas skaičių pateikia kaip tekstą ir jums reikia atlikti matematinius veiksmus.

Išraiška: int(variables('textNumber')) arba float(variables('textNumber')) ir string(variables('numericValue'))

Pavyzdys: int('42') pateikia 42. float('3.14')grąžina .3.14 string(42)grąžina .'42'

Svarbu

int() dešimtainė eilutė pateikia klaidą; ji nesutrumtrumi. Jei kintamajame gali būti dešimtainis skaičius, pirmiausia naudokite float() : int(float(variables('input'))). Su konstantų reikšmėmis, pvz int('3.14')., klaida sugaišta sutaupyus laiko (InvalidTemplate), o ne vykdymo metu.

25. Procentų skaičiavimas

Scenarijus: rodyti, kokia vienos trupmenos reikšmė yra kitos reikšmės (pvz., baigimo koeficientas, naudojimas).

Išraiška: mul(div(float(variables('part')), float(variables('total'))), 100)

Pavyzdys: With part=75 and total=200, returns 37.5.

Svarbu

Sveikojo skaičiaus dalyba trumpinama. div(75, 200) grąžinama 0 , nes abu yra sveikieji skaičiai. Visada pirmiausia konvertuoti į slankią: div(float(75), float(200)) pateikia 0.375.

Sąlyginės sąlygos ir logika

26. Jei / tada / kitas reiškinyje

Scenarijus: pateikti skirtingas reikšmes pagal sąlygą, neįtraukiant veiksmo Sąlyga į srautą.

Išraiška: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')

Pavyzdys: Jei būsena yra Approved, pateikia Proceed. Kitu atveju grąžina Wait.

Pastaba.

Ši if() funkcija tiesiogiai nepalaiko >< operatorių. Naudokite pagalbines funkcijas: if(greater(variables('count'), 10), 'Over', 'Under'). Galimi palyginimai: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().

27. Susaidinimas (pirmoji neapibrėžta reikšmė)

Scenarijus: išbandykite kelis laukus ir naudokite pirmąjį, kuriame yra reikšmė, pvz., pageidaujamą vardą, rodomą vardą, el. pašto adresą.

Išraiška: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')

Pavyzdys: Jei preferredName yra neapibrėžtas, o displayName yra 'Alice', pateikia Alice.

Arbatpinigiai

coalesce() null praleidžia, bet ne tuščias eilutes''. Tuščia eilutė yra leistina ne nulinė reikšmė. Jei tuščios eilutės taip pat turėtų būti praleistos, sujunkite su pagalbiniu padėjėju: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Patikrinkite, ar reikšmė neapibrėžta arba tuščia

Scenarijus: Prieš apdorojimą patikrinkite, ar reikiamame lauke yra naudotina reikšmė.

Išraiška: empty(variables('input'))

Pavyzdys: empty('') pateikia true. empty(null)grąžina .true empty('hello')grąžina .false

Svarbu

empty() neveikia su skaičiais. empty(0) įvyksta klaida. Skaičiuodami skaičius, pirmiausia naudokite equals(variables('num'), null) arba patikrinkite tipą.

29. Palyginti datas (yra data A po datos B?)

Scenarijus: patikrinkite, ar praėjo terminas arba ar vienas įvykis įvyko prieš kitą.

Išraiška: greater(ticks(variables('dateA')), ticks(variables('dateB')))

Pavyzdys: greater(ticks('2026-03-18'), ticks('2026-03-15')) pateikia true (kovo 18 d. yra po kovo 15 d.).

Svarbu

Tiesiogiai palyginant datos eilutes su greater('2026-03-18', '2026-03-15') iso formatu (YYYY-MM-DD), nes jis rūšiuoja lexicographically. Tačiau tai nepavyksta dėl kitų formatų. greater('03/18/2026', '12/01/2025')grąžinamafalse, nes0<1 . Visada naudokite ticks() patikimam datų palyginimui.

30. Bulio logika (IR/OR sąlygose)

Scenarijus: kelių sąlygų sujungimas viename reiškinyje, pvz., patvirtinta AND suma > 1000.

Išraiška: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))

Pavyzdys: pateikia true tik tada, jei būsena yra lygi Approved , o suma didesnė už 1000.

Pastaba.

Negalite susieti and/or su &&/|| sintakse. Visada naudokite funkcijos formą. Norėdami atlikti sudėtingą logiką, įdėkite juos: or(and(A, B), and(C, D)). Skaitomumas blogina gilų įdėjimą. Verčiau naudokite veiksmą Sąlyga su keliomis eilutėmis.

Sparčiųjų nuorodų kortelė

Užduotis „Expression“
Didžiąsias toUpper(value)
Mažosios toLower(value)
Papildoma eilutė substring(value, start, length)
Pakeisti replace(value, old, new)
Skaidyti split(value, delimiter)
Yra (tekstas) contains(toLower(value), toLower(search))
Dabar (suformatuota) formatDateTime(utcNow(), 'yyyy-MM-dd')
Įtraukti dienų addDays(date, count)
Savaitės diena dayOfWeek(date) (0 = Saulė)
Dienos tarp div(sub(ticks(end), ticks(start)), 864000000000)
Pirmas elementas first(array)
Paskutinis elementas last(array)
Skaič. length(array)
Prisijungti join(array, delimiter)
Analizuoti JSON json(stringValue)
Saugi ypatybė object?['key']
Neapibrėžta atsarginė reikšmė coalesce(value, default)
Yra tuščias empty(value)
Jei / kita if(condition, trueVal, falseVal)
Palyginkite datas greater(ticks(dateA), ticks(dateB))
Sveikasis skaičius iš eilutės int(stringValue)
Slankioja iš eilutės float(stringValue)
IR and(condA, condB)
ARBA or(condA, condB)

Pastaba: autorius sukūrė šį straipsnį naudodamas DI. Sužinokite daugiau