Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo explica 30 padrões de expressão prontos a usar para cenários comuns nos fluxos cloud do Power Automate. Podes copiar, adaptar e usar estes padrões nos teus fluxos.
Observação
Estas expressões funcionam em todos os níveis de licença cloud flow do Power Automate. Encontre a referência completa da função nas funções de expressão do fluxo de trabalho.
Operações de texto
1. Converter para maiúsculas ou minúsculas
Cenário: Normalizar a entrada do utilizador antes da comparação ou armazenamento.
Expressão: toUpper(variables('input')) ou toLower(variables('input'))
Exemplo: toLower('John.Smith@Contoso.COM')john.smith@contoso.com
Important
toUpper() é sensível a maiúsculas minúsculas quando usado em comparações. Se usares toUpper(A) = B, certifica-te de que aplicas em ambos os lados.
toUpper(A) = B falha se B for de caso misto.
2. Extrair substring (esquerda, direita, meio)
Cenário: Retira uma parte específica de um valor de texto. Escolhe os primeiros N caracteres, o último N ou um intervalo do meio.
Expressão:
- Esquerda:
substring(variables('text'), 0, 5) - Certo:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Mid:
substring(variables('text'), 3, 4)
Exemplo: substring('Invoice-2026-0042', 8, 4)2026
Tip
O segundo parâmetro é o índice inicial (baseado em 0), o terceiro é o comprimento, não o índice final.
substring('ABCDE', 1, 3) retorna BCD, não BC.
3. Substituir texto
Cenário: Limpar ou transformar os valores do texto. Remover caracteres, trocar delimitadores, corrigir a formatação.
Expressão: replace(variables('input'), 'old', 'new')
Exemplo: replace('2026/03/18', '/', '-')2026-03-18
Observação
replace() diferencia maiúsculas de minúsculas.
replace('Hello', 'hello', 'Hi') Retornos Hello inalterados. Converte primeiro para um caso comum, se necessário.
4. Dividir a cadeia em array
Cenário: Dividir um valor delimitado (CSV, emails separados por ponto e vírgula) em itens individuais para looping.
Expressão: split(variables('input'), ',')
Exemplo: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',')["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tip
Os espaços após o delimitador são preservados.
split('a, b, c', ',') retorna ["a"," b"," c"] com espaços à frente. Use trim() em cada item numa ação Select depois.
5. Concatenar com quebras de linha (para emails)
Cenário: Constrói um corpo de mensagens com várias linhas para notificações por email ou Teams.
Expressão: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Exemplo: Use decodeUriComponent('%0A') para uma nova linha ou decodeUriComponent('%0D%0A') para quebras de linha ao estilo Windows.
Important
Usar \n expressões diretamente não produz uma quebra de linha. Produz os caracteres \nliterais . Use sempre a decodeUriComponent abordagem, ou use <br> se a saída for HTML.
6. Verificar se a cadeia contém texto
Cenário: Encaminhe um fluxo com base em se a linha de assunto, corpo do email ou campo contém uma palavra-chave.
Expressão: contains(toLower(triggerBody()?['subject']), 'urgent')
Exemplo: contains('Project Alpha Review', 'Alpha')true
Observação
contains() diferencia maiúsculas de minúsculas. Enrole sempre tanto o palheiro como a agulha para toLower() que não sejam sensíveis a maiúsculas minúsculas: contains(toLower(value), toLower(search)).
Data e hora
7. Obter data/hora atual num formato específico
Cenário: Carimbe um nome de ficheiro, entrada de registo ou email com a data e hora atuais.
Expressão: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Exemplo: Retornos 2026-03-18 14:30 (UTC). Use convertTimeZone() para a hora local.
Tip
utcNow() é sempre o UTC. Para a hora local, encadeie com convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Adicionar ou subtrair dias de uma data
Cenário: Calcule uma data de vencimento, expiração ou data de lembrete em relação a hoje.
Expressão: addDays(utcNow(), 7) ou addDays(utcNow(), -30)
Exemplo: Se hoje for 2026-03-18, addDays(utcNow(), 7) retorna 2026-03-25T...Z
Observação
addDays() também aceita valores fracionários, mas addHours() ou addMinutes() são mais claros para deslocamentos sub-dias. Não uses addDays(utcNow(), 0.5) quando queres addHours(utcNow(), 12)dizer .
9. Converter a cadeia para data (análise sintática)
Cenário: Um campo de texto contém um tipo 03/18/2026 de data e é necessário usá-lo nas funções de data.
Expressão: parseDateTime(variables('dateString'), 'en-US')
Exemplo: parseDateTime('03/18/2026', 'en-US') devolve um valor de data-hora adequado.
Important
Sem o parâmetro local, a análise depende das definições regionais do fluxo e pode trocar mês/dia. Especifique sempre o local explicitamente para evitar 03/04/2026 ser interpretado como 3 de abril em vez de 4 de março.
10. Obter um dia da semana
Cenário: Executar uma lógica diferente nos dias úteis e ao fim de semana, ou gerar um "relatório de segunda-feira".
Expressão: dayOfWeek(utcNow())
Exemplo: Retorna 0 para domingo, 1 para segunda-feira, ..., 6 para sábado.
Tip
Domingo é 0, não 7. Usar or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) para consultas ao fim de semana. Uma condição como dayOfWeek(utcNow()) > 5 apanhar o sábado mas falhar o domingo.
11. Calcular a diferença entre duas datas
Cenário: Determinar quantos dias decorreram entre a data de um pedido e a data de conclusão.
Expressão: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Exemplo: Se o início é 2026-03-01 e o fim é 2026-03-18, devolve 17.
Observação
Não há nenhuma função incorporada dateDiff() . Tens de usar a abordagem das carraças. O divisor 864000000000 converte carraças em dias. Durante horas, usa 36000000000; por minutos, usa 600000000.
12. Data de formatação para exibição
Cenário: Converter um valor de data-hora para um formato legível por humanos para emails ou relatórios.
Expressão: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') ou formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Exemplo: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy')March 18, 2026
Important
MM são meses, mm são minutos.
formatDateTime(value, 'mm/DD/yyyy') produz 30/18/2026 (minutos e dia) em vez de 03/18/2026. Use dd (minúscula) para o dia do mês.
Matrizes e coleções
13. Filtrar um array por condição
Cenário: Obtenha apenas os itens de um array que cumpram um critério específico.
Expressão: Usar a ação do array de filtros com: @item()?['Status'] é igual a 'Active'
Exemplo: Retornos de entrada [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]
Observação
Não podes usar uma whereexpressão de filtro em linha ao estilo -. Use a ação Filter array (não uma expressão). Para filtragem baseada em expressões, use @equals(item()?['Status'], 'Active') no modo avançado do array de Filtros.
14. Obter o primeiro ou último item do array
Cenário: Recuperar o registo mais recente ou a primeira correspondência de uma lista.
Expressão: first(variables('myArray')) ou last(variables('myArray'))
Exemplo: first(body('Get_items')?['value']) devolve o primeiro item de uma consulta SharePoint.
Tip
first() num array vazio devolve null, não é um erro. Segue sempre com uma verificação nula: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Contar itens no array
Cenário: Verifique quantos resultados uma consulta devolveu, ou valide que uma lista tem itens suficientes.
Expressão: length(variables('myArray'))
Exemplo: length(body('Get_items')?['value']) devolve o número de itens de uma consulta SharePoint list.
Observação
length() funciona tanto em arrays como em cordas.
length('hello') retornos 5 (número de caracteres). Certifica-te de que estás a passar um array, não uma corda que parece um array.
16. Criar uma cadeia separada por vírgulas a partir do array (join)
Cenário: Converter uma lista de nomes, emails ou IDs numa única cadeia delimitada para exibição ou chamada API.
Expressão: join(variables('myArray'), ', ')
Exemplo: join(createArray('Alice', 'Bob', 'Carol'), '; ')Alice; Bob; Carol
Tip
join() Funciona em conjuntos de cordas. Se o teu array contiver objetos, usa primeiro uma ação Select para extrair o campo que queres e depois junta-te ao resultado.
17. Verifique se o array contém um valor
Cenário: Determine se existe um item específico numa lista antes de avançar.
Expressão: contains(variables('myArray'), 'searchValue')
Exemplo: contains(createArray('North', 'South', 'East', 'West'), 'East')true
Observação
Para arrays de objetos, contains() verifica o valor total do objeto, não uma propriedade. Para verificar se algum objeto tem uma propriedade correspondente, use uma ação de array de filtro e depois verifique length() o resultado.
JSON e objetos
18. Analisar a cadeia JSON
Cenário: Uma ação HTTP ou um conector personalizado devolve uma string JSON com a qual precisa de trabalhar como dados estruturados.
Expressão: json(body('HTTP'))
Exemplo: json('{"name":"Alice","age":30}') devolve um objeto ao qual podes aceder com ?['name'].
Important
Não faças duas análises. Se a ação já devolve JSON analisado (a maioria das ações do conector faz), envolvê-la json() novamente causa um erro. Use json() apenas em respostas brutas de strings, não em saídas de ação que já sejam objetos.
19. Obter propriedade aninhada no JSON
Cenário: Aceder a um valor profundamente dentro de uma resposta JSON, por exemplo, response.data.items[0].name.
Expressão: body('HTTP')?['data']?['items']?[0]?['name']
Exemplo: Para {"data":{"items":[{"name":"Widget"}]}}, devolve Widget.
Important
Não te esqueças da ? (navegação segura).
body('HTTP')['data']['items'] gera um erro se algum nível for nulo. Use sempre ?['key'] para atravessar em segurança: cada um ? retorna null em vez de falhar se o pai estiver em falta.
20. Criar objeto JSON a partir de valores
Cenário: Constrói um corpo de pedido para uma ação HTTP a partir de variáveis de fluxo e conteúdo dinâmico.
Expressão: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Exemplo: Com nome=Alice e estado=Active, devolve {"name":"Alice","status":"Active"}.
Tip
Se alguma variável contiver aspas ou caracteres especiais, o JSON estará malformado. Para construção robusta, use uma ação Compor com createObject('name', variables('name'), 'status', variables('status')) ou construa-a diretamente numa ação Compor.
21. Converter objeto em string
Cenário: Registar um objeto JSON num campo de texto, ou passar dados estruturados como um parâmetro de string.
Expressão: string(variables('myObject'))
Exemplo: string(json('{"a":1}')) retorna {"a":1} como uma corda.
Observação
string() num array ou objeto produz JSON compacto (sem pretty-printing). Não tem nenhum sistema incorporado prettyPrint(). Aceite JSON compacto ou construa texto formatado manualmente.
22. Manusear valores nulos ou vazios de forma segura
Cenário: Prevenir erros quando um campo pode estar nulo, vazio ou completamente ausente.
Expressão: coalesce(triggerBody()?['optionalField'], 'default value')
Exemplo: Se optionalField é nulo, devolve 'default value'. Se tiver um valor, devolve esse valor.
Important
coalesce() Só pegas null, não cordas vazias. Para cadeias vazias, combine-se com uma condição: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). A empty() função retorna verdadeira tanto para a cadeia ''nula como para a vazia .
Números e matemática
23. Arredondar um número
Cenário: Mostrar uma percentagem ou valor de moeda com um número fixo de casas decimais.
Expressão: formatNumber(variables('value'), 'N2') (para exibição) ou div(mul(variables('value'), 100), 100) (para truncamento)
Exemplo: formatNumber(3.14159, 'N2') retorna 3.14 como uma corda.
Observação
formatNumber() devolve uma corda, não um número. Se precisares de fazer mais cálculos sobre o valor arredondado, analisa-o novamente: float(formatNumber(variables('value'), 'N2')).
24. Converter a cadeia em número (e vice-versa)
Cenário: Um formulário ou email dá-te um número como texto, e tens de fazer contas com ele.
Expressão: int(variables('textNumber')) ou float(variables('textNumber')) e string(variables('numericValue'))
Exemplo: int('42') devolve 42.
float('3.14') retorna 3.14.
string(42) retorna '42'.
Important
int() numa cadeia decimal gera um erro; Não trunca. Se uma variável puder conter um decimal, use float() primeiro: int(float(variables('input'))). Com valores constantes como int('3.14'), o erro é apanhado no tempo de gravação (InvalidTemplate), não em tempo de execução.
25. Calcular a percentagem
Cenário: Mostre qual é a fração de um valor de outro (por exemplo, taxa de conclusão, utilização).
Expressão: mul(div(float(variables('part')), float(variables('total'))), 100)
Exemplo: Com parte=75 e total=200, devolve 37.5.
Important
A divisão inteira trunca.
div(75, 200) retorna 0 porque ambos são inteiros. Converta sempre para float primeiro: div(float(75), float(200)) retorna 0.375.
Condicionais e lógica
26. Se/então/senão numa expressão
Cenário: Devolver valores diferentes com base numa condição, sem adicionar uma ação de Condição ao fluxo.
Expressão: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Exemplo: Se o estado for Approved, devolve Proceed. Caso contrário, retorna Wait.
Observação
A if() função não suporta >operadores , < diretamente. Use funções auxiliares: if(greater(variables('count'), 10), 'Over', 'Under'). Comparações disponíveis: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().
27. Coalesce (primeiro valor não nulo)
Cenário: Experimente vários campos e use o primeiro que tenha um valor, por exemplo, nome preferido, nome de exibição, email.
Expressão: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Exemplo: Se preferredName for nulo e displayName for 'Alice', devolve Alice.
Tip
coalesce() Salta null mas não cordas ''vazias. Uma cadeia vazia é um valor válido e não nulo. Combine com um ajudante se as cadeias vazias também devem ser saltadas: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Verifique se o valor é nulo ou vazio
Cenário: Validar que um campo exigido tem um valor utilizável antes do processamento.
Expressão: empty(variables('input'))
Exemplo: empty('') devolve true.
empty(null) retorna true.
empty('hello') retorna false.
Important
empty() Não funciona com números.
empty(0) lança um erro. Para números, use equals(variables('num'), null) ou verifique primeiro o tipo.
29. Comparar datas (a data A é depois da data B?)
Cenário: Verifique se um prazo já passou, ou se um evento aconteceu antes do outro.
Expressão: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Exemplo: greater(ticks('2026-03-18'), ticks('2026-03-15')) declarações true (18 de março é depois de 15 de março).
Important
Comparar cadeias de datas diretamente funciona greater('2026-03-18', '2026-03-15') para o formato ISO (YYYY-MM-DD) porque ordena lexicograficamente. Mas falha noutros formatos.
greater('03/18/2026', '12/01/2025') retorna false porque 0<1. Usa ticks() sempre para comparar datas de forma fiável.
30. Lógica booleana (E/OU em condições)
Cenário: Combinar múltiplas condições numa única expressão, por exemplo, aprovado E valor > 1000.
Expressão: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Exemplo: Retorna true apenas se o estatuto for Approved igual e o montante for superior a 1000.
Observação
Não se pode encadear and/or com &&/|| sintaxe. Usa sempre a forma de função. Para lógica complexa, aninha-os: or(and(A, B), and(C, D)). A legibilidade degrada-se com o ninhamento profundo. Considere usar uma ação de Condição com várias linhas em vez disso.
Cartão de referência rápida
| Tarefa | Expressão |
|---|---|
| Maiúsculas | toUpper(value) |
| Minúsculas | toLower(value) |
| Substring | substring(value, start, length) |
| Substituir | replace(value, old, new) |
| Dividida | split(value, delimiter) |
| Contém (texto) | contains(toLower(value), toLower(search)) |
| Agora (formatado) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Adicionar dias | addDays(date, count) |
| Dia da semana |
dayOfWeek(date) (0=Sun) |
| Dias entre | div(sub(ticks(end), ticks(start)), 864000000000) |
| Primeiro item | first(array) |
| Último ponto | last(array) |
| Contagem | length(array) |
| Join | join(array, delimiter) |
| Analisar JSON | json(stringValue) |
| Propriedade segura | object?['key'] |
| Fallback nulo | coalesce(value, default) |
| Está vazio | empty(value) |
| If/else | if(condition, trueVal, falseVal) |
| Comparar datas | greater(ticks(dateA), ticks(dateB)) |
| Int a partir da cadeia | int(stringValue) |
| Flutuação a partir da corda | float(stringValue) |
| AND | and(condA, condB) |
| OR | or(condA, condB) |
Informações relacionadas
- Referência do código de erro do fluxo da nuvem
- Resolução de problemas de erros de fluxo na nuvem
- Usar expressões em condições
- Funções de expressão de fluxo de trabalho de referência
- Limites e configuração do Power Automate
Nota: O autor criou este artigo com a ajuda da IA. Mais informações