Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Este artigo explica 30 patróns de expresión listos para usar para escenarios comúns nos fluxos na nube de Power Automate. Podes copiar, adaptar e usar estes patróns nos teus fluxos.
Nota
Estas expresións funcionan en todos os niveis de licenza de fluxo en nube de Power Automate. Atopa a referencia completa da función nas funcións de expresión do fluxo de traballo.
Operacións de texto
1. Converter a maiúsculas ou minúsculas
Escenario: Normalizar a entrada do usuario antes de comparar ou almacenar.
Expresión: toUpper(variables('input')) ou toLower(variables('input'))
Exemplo: toLower('John.Smith@Contoso.COM') retornos john.smith@contoso.com
Importante
toUpper() é sensible a maiúsculas minúsculas cando se usa en comparacións. Se o usas toUpper(A) = B, asegúrate de aplicalo en ambos os lados.
toUpper(A) = B falla se B é un caso mixto.
2. Extraer subcadea (esquerda, dereita, medio)
Escenario: Extraer unha parte específica dun valor de texto. Colle os primeiros N caracteres, o último N ou un rango desde o medio.
Expresión:
- Esquerda:
substring(variables('text'), 0, 5) - Dereito:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Mid:
substring(variables('text'), 3, 4)
Exemplo: substring('Invoice-2026-0042', 8, 4) retornos 2026
Suxestión
O segundo parámetro é o índice inicial (baseado en 0), o terceiro é a lonxitude, non o índice final.
substring('ABCDE', 1, 3) devolve BCD, non BC.
3. Substituír texto
Escenario: Limpar ou transformar os valores do texto. Elimina caracteres, cambia delimitadores, arranxa o formato.
Expresión: replace(variables('input'), 'old', 'new')
Exemplo: replace('2026/03/18', '/', '-') retornos 2026-03-18
Nota
replace() é sensible a maiúsculas minúsculas.
replace('Hello', 'hello', 'Hi') Retornos Hello sen cambios. Converte primeiro a un caso común se é necesario.
4. Dividir a cadea en matriz
Escenario: Dividir un valor delimitado (CSV, correos electrónicos separados por punto e coma) en elementos individuais para repetir en bucle.
Expresión: split(variables('input'), ',')
Exemplo: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') retornos ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Suxestión
Os espazos posteriores ao delimitador consérvanse.
split('a, b, c', ',') devolve ["a"," b"," c"] con espazos principais. Úsase trim() en cada obxecto nunha acción de Selección despois.
5. Concatenar con saltos de liña (para correos electrónicos)
Escenario: Constrúe un corpo de mensaxes multiliña para notificacións de correo electrónico ou Teams.
Expresión: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Exemplo: Usa decodeUriComponent('%0A') para unha nova liña ou decodeUriComponent('%0D%0A') para saltos de liña ao estilo Windows.
Importante
Usar \n expresións directamente non produce un salto de liña. Produce os caracteres \nliterais . Sempre usa o decodeUriComponent enfoque, ou usa <br> se a saída é HTML.
6. Comproba se a cadea contén texto
Escenario: Enruta un fluxo segundo se unha liña de asunto, corpo do correo electrónico ou campo contén unha palabra clave.
Expresión: contains(toLower(triggerBody()?['subject']), 'urgent')
Exemplo: contains('Project Alpha Review', 'Alpha') retornos true
Nota
contains() é sensible a maiúsculas minúsculas. Sempre envolve tanto o pallo como a agulla para toLower() que non se identifiquen con minúsculas e minúsculas: contains(toLower(value), toLower(search)).
Data e hora
7. Obtén a data/hora actual nun formato específico
Escenario: Marca un nome de ficheiro, entrada de rexistro ou correo electrónico coa data e hora actuais.
Expresión: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Exemplo: Devolucións 2026-03-18 14:30 (UTC). Usa convertTimeZone() para a hora local.
Suxestión
utcNow() é sempre UTC. Para a hora local, encadea con convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Engadir ou restar días dunha data
Escenario: Calcular unha data de vencemento, caducidade ou data de recordatorio respecto a hoxe.
Expresión: addDays(utcNow(), 7) ou addDays(utcNow(), -30)
Exemplo: Se hoxe é 2026-03-18, addDays(utcNow(), 7) retorna 2026-03-25T...Z
Nota
addDays() Tamén acepta valores fraccionarios, pero addHours() ou addMinutes() son máis claros para desprazamentos sub-días. Non uses addDays(utcNow(), 0.5) cando queres dicir addHours(utcNow(), 12).
9. Converter cadea a data (análise sintáctica)
Escenario: Un campo de texto contén un tipo 03/18/2026 de data e necesitas usalo nas funcións de data.
Expresión: parseDateTime(variables('dateString'), 'en-US')
Exemplo: parseDateTime('03/18/2026', 'en-US') devolve un valor de data e hora adecuado.
Importante
Sen o parámetro local, a análise depende das configuracións rexionais do fluxo e pode cambiar mes/día. Especifica sempre o lugar explicitamente para evitar 03/04/2026 que se interprete como o 3 de abril fronte ao 4 de marzo.
10. Conseguir o día da semana
Escenario: Executar unha lóxica diferente entre semana fronte aos fins de semana, ou xerar un "informe do luns".
Expresión: dayOfWeek(utcNow())
Exemplo: Retorna 0 para o domingo, 1 para o luns, ..., 6 para o sábado.
Suxestión
O domingo é 0, non 7. Utilízao or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) para comprobacións de fin de semana. Unha condición como dayOfWeek(utcNow()) > 5 que se atrapa o sábado pero perde o domingo.
11. Calcular a diferenza entre dúas datas
Escenario: Determinar cantos días pasaron entre a data da solicitude e a data de finalización.
Expresión: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Exemplo: Se o inicio é 2026-03-01 e o final é 2026-03-18, devolve 17.
Nota
Non ten función incorporada dateDiff() . Tes que usar o método das garrapatas. O divisor 864000000000 converte as marcas en días. Durante horas, usa 36000000000; durante minutos, usa 600000000.
12. Data de formato para a visualización
Escenario: Converter un valor de data-hora a un formato lexible para correos electrónicos ou informes.
Expresión: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') ou formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Exemplo: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') retornos March 18, 2026
Importante
MM son meses, mm son minutos.
formatDateTime(value, 'mm/DD/yyyy') produce 30/18/2026 (minutos e día) en lugar de 03/18/2026. Usa dd (minúscula) para o día do mes.
Matrices e coleccións
13. Filtrar un array por condición
Escenario: Obtén só os elementos dun array que cumpran un criterio específico.
Expresión: Usar a acción do array de filtros con: @item()?['Status'] é igual a 'Active'
Exemplo: Retornos de entrada [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]
Nota
Non podes usar unha whereexpresión de filtro estilo -en liña. Usa a acción do array de filtros (non unha expresión). Para filtrado baseado en expresións, úsase @equals(item()?['Status'], 'Active') no modo avanzado do array de filtros.
14. Obter o primeiro ou último obxecto do array
Escenario: Recuperar o rexistro máis recente ou a primeira coincidencia dunha lista.
Expresión: first(variables('myArray')) ou last(variables('myArray'))
Exemplo: first(body('Get_items')?['value']) devolve o primeiro elemento dunha consulta SharePoint.
Suxestión
first() nun array baleiro devolve null, non un erro. Segue sempre cunha comprobación nula: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Contar os elementos no array
Escenario: Comproba cantos resultados devolveu unha consulta, ou valida que unha lista teña suficientes elementos.
Expresión: length(variables('myArray'))
Exemplo: length(body('Get_items')?['value']) devolve o número de elementos dunha consulta SharePoint list.
Nota
length() Funciona tanto en matrices como en cadeas.
length('hello') devolucións 5 (número de caracteres). Asegúrate de pasar un array, non unha cadea que pareza un array.
16. Crear cadea separada por comas a partir do array (unión)
Escenario: Converter unha lista de nomes, correos electrónicos ou IDs nunha única cadea delimitada para visualización ou chamada API.
Expresión: join(variables('myArray'), ', ')
Exemplo: join(createArray('Alice', 'Bob', 'Carol'), '; ') retornos Alice; Bob; Carol
Suxestión
join() Funciona con conxuntos de cordas. Se o teu array contén obxectos, usa primeiro unha acción Select para extraer o campo que queres e logo únete ao resultado.
17. Comproba se o array contén un valor
Escenario: Determina se existe un elemento específico nunha lista antes de continuar.
Expresión: contains(variables('myArray'), 'searchValue')
Exemplo: contains(createArray('North', 'South', 'East', 'West'), 'East') retornos true
Nota
Para matrices de obxectos, contains() comproba o obxecto completo, non o valor dunha propiedade. Para comprobar se algún obxecto ten unha propiedade de coincidencia, usa unha acción de matriz de filtro e logo comproba length() o resultado.
JSON e obxectos
18. Analizar a cadea JSON
Escenario: Unha acción HTTP ou un conector personalizado devolve unha cadea JSON coa que necesitas traballar como datos estruturados.
Expresión: json(body('HTTP'))
Exemplo: json('{"name":"Alice","age":30}') devolve un obxecto ao que podes acceder con ?['name'].
Importante
Non fagas dúas análises. Se a acción xa devolve JSON analizado (a maioría das accións do conector), envolvela json() de novo causa un erro. Usa json() só en respostas de cadeas en bruto, non en saídas de acción que xa son obxectos.
19. Obtén propiedade anidada de JSON
Escenario: Acceder a un valor profundo dentro dunha resposta JSON, por exemplo, response.data.items[0].name.
Expresión: body('HTTP')?['data']?['items']?[0]?['name']
Exemplo: Para {"data":{"items":[{"name":"Widget"}]}}, devolve Widget.
Importante
Non esquezas a ? navegación segura.
body('HTTP')['data']['items'] lanza un erro se calquera nivel é nulo. Sempre usar ?['key'] para atravesar con seguridade: cada ? un devolve nulo en lugar de fallar se falta o pai.
20. Crear obxecto JSON a partir de valores
Escenario: Constrúe un corpo de solicitude para unha acción HTTP a partir de variables de fluxo e contido dinámico.
Expresión: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Exemplo: Con nome=Alice e estado=Active, devolve {"name":"Alice","status":"Active"}.
Suxestión
Se algunha variable contén comiñas ou caracteres especiais, o JSON estará malformado. Para unha construción robusta, usa unha acción Compose con createObject('name', variables('name'), 'status', variables('status')) ou constrúea directamente nunha acción Compose.
21. Converter obxecto en cadea
Escenario: Rexistrar un obxecto JSON nun campo de texto, ou pasar datos estruturados como parámetro de cadea.
Expresión: string(variables('myObject'))
Exemplo: string(json('{"a":1}')) devolve {"a":1} como cadea.
Nota
string() nun array ou obxecto produce JSON compacto (sen pretty-printing). Non ten ningún dispositivo incorporado prettyPrint(). Aceptar JSON compacto ou compilar texto formatado manualmente.
22. Manexar valores nulos ou baleiros de forma segura
Escenario: Evitar erros cando un campo poida estar nulo, baleiro ou completamente ausente.
Expresión: coalesce(triggerBody()?['optionalField'], 'default value')
Exemplo: Se optionalField é nulo, devolve 'default value'. Se ten un valor, devolve ese valor.
Importante
coalesce() Só asas null, non cordas baleiras. Para cadeas baleiras, combínase cunha condición: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). A empty() función devolve verdadeira tanto para a cadea ''nula como para a baleira.
Números e matemáticas
23. Redondear un número
Escenario: Mostrar un valor porcentual ou de moeda cun número fixo de decimais.
Expresión: formatNumber(variables('value'), 'N2') (para display) ou div(mul(variables('value'), 100), 100) (para truncamento)
Exemplo: formatNumber(3.14159, 'N2') devolve 3.14 como cadea.
Nota
formatNumber() devolve unha cadea, non un número. Se necesitas facer máis cálculos sobre o valor redondeado, analiza de novo: float(formatNumber(variables('value'), 'N2')).
24. Converter cadea en número (e viceversa)
Escenario: Un formulario ou correo electrónico dáche un número como texto, e necesitas facer cálculos con el.
Expresión: int(variables('textNumber')) ou float(variables('textNumber')) e string(variables('numericValue'))
Exemplo: int('42') devolve 42.
float('3.14') devolve 3.14.
string(42) devolve '42'.
Importante
int() nunha cadea decimal aparece un erro; Non se trunca. Se unha variable pode conter un decimal, use float() primeiro: int(float(variables('input'))). Con valores constantes como int('3.14'), o erro é detectado no tempo de gardado (InvalidTemplate), non en tempo de execución.
25. Calcular porcentaxe
Escenario: Mostra que fracción é un valor doutro (por exemplo, taxa de completación, utilización).
Expresión: mul(div(float(variables('part')), float(variables('total'))), 100)
Exemplo: Con parte=75 e total=200, devolve 37.5.
Importante
A división enteira trunca.
div(75, 200) retorna 0 porque ambos son enteiros. Sempre converter a float primeiro: div(float(75), float(200)) devolve 0.375.
Condicionais e lóxica
26. Se/entón/se non nunha expresión
Escenario: Devolve valores diferentes baseados nunha condición, sen engadir unha acción de Condición ao fluxo.
Expresión: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Exemplo: Se o estado é Approved, devolve Proceed. Se non, devolve Wait.
Nota
A if() función non soporta >operadores , < directamente. Usar funcións auxiliares: if(greater(variables('count'), 10), 'Over', 'Under'). Comparacións dispoñibles: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().
27. Coalesce (primeiro valor non nulo)
Escenario: Proba varios campos e usa o primeiro que teña un valor, por exemplo, nome preferido, nome para mostrar, correo electrónico.
Expresión: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Exemplo: Se preferredName é nulo e displayName é 'Alice', devolve Alice.
Suxestión
coalesce() salta null pero non cordas ''baleiras. Unha cadea baleira é un valor válido non nulo. Combina cun axudante se tamén se deben saltar cadeas baleiras: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Comproba se o valor é nulo ou baleiro
Escenario: Validar que un campo requirido ten un valor útil antes de procesalo.
Expresión: empty(variables('input'))
Exemplo: empty('') devolve true.
empty(null) devolve true.
empty('hello') devolve false.
Importante
empty() Non funciona cos números.
empty(0) Lanza un erro. Para números, usa equals(variables('num'), null) ou comproba primeiro o tipo.
29. Comparar datas (é a data A despois da data B?)
Escenario: Comproba se pasou un prazo ou se un evento ocorreu antes que outro.
Expresión: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Exemplo: greater(ticks('2026-03-18'), ticks('2026-03-15')) devolucións true (o 18 de marzo é despois do 15 de marzo).
Importante
Comparar cadeas de datas directamente greater('2026-03-18', '2026-03-15') funciona para o formato ISO (YYYY-MM-DD) porque ordena lexicograficamente. Pero falla noutros formatos.
greater('03/18/2026', '12/01/2025') retorna false porque 0<1. Sempre usa ticks() para unha comparación fiable de datas.
30. Lóxica booleana (E/OU en condicións)
Escenario: Combinar múltiples condicións nunha única expresión, por exemplo, aprobado E importe > 1000.
Expresión: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Exemplo: Retorna true só se o estado é Approved igual e a cantidade é maior que 1000.
Nota
Non podes encadear and/or coa &&/|| sintaxe. Sempre usa a forma de función. Para lóxica complexa, anidádeos: or(and(A, B), and(C, D)). A lexibilidade degrada co anidamento profundo. Considera usar unha acción de Condición con varias filas en vez diso.
Tarxeta de referencia rápida
| Tarefa | Expression |
|---|---|
| Maiúsculas | toUpper(value) |
| Minúsculas | toLower(value) |
| Subcadea | substring(value, start, length) |
| Replace | replace(value, old, new) |
| Split | split(value, delimiter) |
| Contén (texto) | contains(toLower(value), toLower(search)) |
| Agora (formatado) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Engade días | addDays(date, count) |
| Día da semana |
dayOfWeek(date) (0=Sol) |
| Días entre medias | div(sub(ticks(end), ticks(start)), 864000000000) |
| Primeiro punto | first(array) |
| Último punto | last(array) |
| Count | length(array) |
| Unirse | join(array, delimiter) |
| Analizar JSON | json(stringValue) |
| Propiedade segura | object?['key'] |
| Respaldo nulo | coalesce(value, default) |
| Está baleiro | empty(value) |
| Se/se non | if(condition, trueVal, falseVal) |
| Comparar datas | greater(ticks(dateA), ticks(dateB)) |
| Int desde a cadea | int(stringValue) |
| Flotación desde a corda | float(stringValue) |
| e | and(condA, condB) |
| OU | or(condA, condB) |
Información relacionada
- Referencia do código de erro do fluxo de nubes
- Solucionar erros de fluxo na nube
- Usar expresións en condicións
- Referencia das funcións de expresión do fluxo de traballo
- Power Automate límites e configuración
Nota: O autor creou este artigo coa axuda da IA. Máis información