Livro de receitas de expressão para fluxos de nuvem

Este artigo explica 30 padrões de expressão prontos para uso para cenários comuns em Power Automate fluxos de nuvem. Você pode copiar, adaptar e usar esses padrões em seus fluxos.

Note

Essas expressões funcionam em todas as camadas de licença de fluxo de nuvem Power Automate. Localize a referência de função completa em funções de expressão de fluxo de trabalho.

Operações de texto

1. Converter em maiúsculas ou minúsculas

Cenário: normalizar a entrada do usuário antes da comparação ou armazenamento.

Expressão: toUpper(variables('input')) ou toLower(variables('input'))

Exemplo: toLower('John.Smith@Contoso.COM') retorna john.smith@contoso.com

Importante

toUpper() diferencia maiúsculas de minúsculas quando usado em comparações. Se você usar toUpper(A) = B, aplique-o a ambos os lados. toUpper(A) = B falhará se B for um caso misto.

2. Extrair subcadeia de caracteres (esquerda, direita, meio)

Cenário: efetuar pull de uma parte específica de um valor de texto. Obtenha os primeiros N caracteres, último N ou um intervalo do meio.

Expressão:

  • Deixou: substring(variables('text'), 0, 5)
  • Correto: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Meados: substring(variables('text'), 3, 4)

Exemplo: substring('Invoice-2026-0042', 8, 4) retorna 2026

Dica

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 valores de texto. Remova caracteres, troque delimitadores, corrija a formatação.

Expressão: replace(variables('input'), 'old', 'new')

Exemplo: replace('2026/03/18', '/', '-') retorna 2026-03-18

Note

replace() diferencia maiúsculas e minúsculas. replace('Hello', 'hello', 'Hi') retorna Hello inalterado. Converta em um caso comum primeiro, se necessário.

4. Dividir cadeia de caracteres em matriz

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', ',') retorna ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]

Dica

Espaços após o delimitador são preservados. split('a, b, c', ',') retorna ["a"," b"," c"] com espaços à esquerda. Use trim() em cada item em uma ação Selecionar posteriormente.

5. Concatenar com quebras de linha (para emails)

Cenário: crie um corpo de mensagem de várias linhas para notificações por email ou do Teams.

Expressão: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')

Example: use decodeUriComponent('%0A') para uma nova linha ou decodeUriComponent('%0D%0A') para quebras de linha no estilo Windows.

Importante

Usar \n diretamente em expressões não produz uma quebra de linha. Ele gera os caracteres literais \n. Sempre use a decodeUriComponent abordagem ou use <br> se a saída for HTML.

6. Verificar se a cadeia de caracteres contém texto

Cenário: rotear um fluxo com base em uma linha de assunto, um corpo de email ou um campo que contém uma palavra-chave.

Expressão: contains(toLower(triggerBody()?['subject']), 'urgent')

Exemplo: contains('Project Alpha Review', 'Alpha') retorna true

Note

contains() diferencia maiúsculas e minúsculas. Sempre enrole o palheiro e a agulha toLower() para correspondência que não diferencia maiúsculas de minúsculas: contains(toLower(value), toLower(search)).

Data e hora

7. Obter data/hora atual em um formato específico

Cenário: carimbar um nome de arquivo, entrada de log ou email com a data e hora atuais.

Expressão: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')

Exemplo: Retorna 2026-03-18 14:30 (UTC). Use convertTimeZone() para a hora local.

Dica

utcNow() é sempre UTC. Para a hora local, encadear 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 conclusão, 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) retornará 2026-03-25T...Z

Note

addDays() também aceita valores fracionários, mas addHours() ou addMinutes() são mais claros para deslocamentos sub-dia. Não use addDays(utcNow(), 0.5) quando você quer dizer addHours(utcNow(), 12).

9. Converter cadeia de caracteres em data (análise)

Cenário: um campo de texto contém uma data como 03/18/2026 e você precisa usá-la em funções de data.

Expressão: parseDateTime(variables('dateString'), 'en-US')

Exemplo: parseDateTime('03/18/2026', 'en-US') retorna um valor de datetime adequado.

Importante

Sem o parâmetro de localidade, a análise depende das configurações regionais do fluxo e pode trocar mês/dia. Sempre especifique a localidade explicitamente para evitar 03/04/2026 ser interpretada como 3 de abril versus 4 de março.

10. Obter dia da semana

Cenário: execute uma lógica diferente em dias da semana versus finais de semana ou gere um "relatório de segunda-feira".

Expressão: dayOfWeek(utcNow())

Exemplo: retorna 0 para domingo, 1 para segunda-feira, ..., 6 para sábado.

Dica

Domingo é 0, não 7. Use or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) para verificações de fim de semana. Uma condição como dayOfWeek(utcNow()) > 5 captura sábado, mas perde domingo.

11. Calcular a diferença entre duas datas

Cenário: determine quantos dias decorridos entre uma data de solicitação e uma data de conclusão.

Expressão: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)

Exemplo: se o início for 2026-03-01 e o final for 2026-03-18, retornará 17.

Note

Não há nenhuma função interna dateDiff() . Você deve usar a abordagem de tiques. O divisor 864000000000 converte tiques em dias. Por horas, use 36000000000; por minutos, use 600000000.

12. Data de formatação para exibição

Cenário: converter um valor de datetime em 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') retorna March 18, 2026

Importante

MM é meses, mm é minutos. formatDateTime(value, 'mm/DD/yyyy') 30/18/2026 produz (minutos e dia) em vez de 03/18/2026. Use dd (em letras minúsculas) para o dia do mês.

Matrizes e coleções

13. Filtrar uma matriz por condição

Cenário: obtenha apenas os itens de uma matriz que correspondam a um critério específico.

Expressão: Use a ação filtrar matriz com: @item()?['Status'] é igual a 'Active'

Exemplo: retornos de entrada [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]

Note

Você não pode usar uma whereexpressão de filtro de estilo embutida. Use a ação filtrar matriz (não uma expressão). Para filtragem baseada em expressão, use @equals(item()?['Status'], 'Active') no modo avançado da matriz Filter.

14. Obter o primeiro ou o último item da matriz

Cenário: recuperar o registro mais recente ou a primeira correspondência de uma lista.

Expressão: first(variables('myArray')) ou last(variables('myArray'))

Example: first(body('Get_items')?['value']) retorna o primeiro item de uma consulta SharePoint.

Dica

first() em uma matriz vazia retorna null, não um erro. Sempre siga com uma verificação nula: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Contar itens na matriz

Cenário: verifique quantos resultados uma consulta retornou ou valide se uma lista tem itens suficientes.

Expressão: length(variables('myArray'))

Example: length(body('Get_items')?['value']) retorna o número de itens de uma consulta SharePoint list.

Note

length() funciona em matrizes e cadeias de caracteres. length('hello') retorna 5 (contagem de caracteres). Verifique se você está passando uma matriz, não uma cadeia de caracteres que se parece com uma matriz.

16. Criar cadeia de caracteres separada por vírgula da matriz (junção)

Cenário: converter uma lista de nomes, emails ou IDs em uma única cadeia de caracteres delimitada para exibição ou uma chamada à API.

Expressão: join(variables('myArray'), ', ')

Exemplo: join(createArray('Alice', 'Bob', 'Carol'), '; ') retorna Alice; Bob; Carol

Dica

join() funciona em matrizes de cadeias de caracteres. Se a matriz contiver objetos, use uma ação Selecionar primeiro para extrair o campo desejado e, em seguida, ingresse no resultado.

17. Verificar se a matriz contém um valor

Cenário: determine se existe um item específico em uma lista antes de continuar.

Expressão: contains(variables('myArray'), 'searchValue')

Exemplo: contains(createArray('North', 'South', 'East', 'West'), 'East') retorna true

Note

Para matrizes de objetos, contains() verifica o objeto inteiro, não um valor de propriedade. Para verificar se algum objeto tem uma propriedade correspondente, use uma ação filtrar matriz e, em seguida, verifique length() o resultado.

JSON e objetos

18. Analisar cadeia de caracteres JSON

Cenário: uma ação HTTP ou um conector personalizado retorna uma cadeia de caracteres JSON com a qual você precisa trabalhar como dados estruturados.

Expressão: json(body('HTTP'))

Exemplo: json('{"name":"Alice","age":30}') retorna um objeto que você pode acessar com ?['name'].

Importante

Não analise duas vezes. Se a ação já retornar JSON analisado (a maioria das ações do conector o fazem), encapsular novamente json() causará um erro. Use json() somente em respostas de cadeia de caracteres brutas, não em saídas de ação que já são objetos.

19. Obter propriedade aninhada do JSON

Cenário: acessar um valor profundo dentro de uma resposta JSON, por exemplo, response.data.items[0].name.

Expressão: body('HTTP')?['data']?['items']?[0]?['name']

Exemplo: For {"data":{"items":[{"name":"Widget"}]}}, retorna Widget.

Importante

Não se esqueça da ? (navegação segura). body('HTTP')['data']['items'] gerará um erro se qualquer nível for nulo. Sempre use ?['key'] para percorrer com segurança: cada um ? retorna nulo em vez de falhar se o pai estiver ausente.

20. Criar objeto JSON com base em valores

Cenário: crie um corpo de solicitação 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 name=Alice e status=Active, retorna {"name":"Alice","status":"Active"}.

Dica

Se qualquer variável contiver aspas ou caracteres especiais, o JSON será malformado. Para uma construção robusta, use uma ação De redigircreateObject('name', variables('name'), 'status', variables('status')) ou compilá-la diretamente em uma ação do Compose.

21. Converter objeto em cadeia de caracteres

Cenário: registrar um objeto JSON em um campo de texto ou passar dados estruturados como um parâmetro de cadeia de caracteres.

Expressão: string(variables('myObject'))

Exemplo: string(json('{"a":1}')) retorna {"a":1} como uma cadeia de caracteres.

Note

string() em uma matriz ou objeto produz JSON compacto (sem impressão bonita). Não há nenhum interno prettyPrint(). Aceite o JSON compacto ou crie texto formatado manualmente.

22. Manipular valores nulos ou vazios com segurança

Cenário: evite erros quando um campo pode ser nulo, vazio ou totalmente ausente.

Expressão: coalesce(triggerBody()?['optionalField'], 'default value')

Exemplo: se optionalField for nulo, retornará 'default value'. Se ele tiver um valor, retornará esse valor.

Importante

coalesce() apenas manipula null, não cadeias de caracteres vazias. Para cadeias de caracteres vazias, combine com uma condição: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). A empty() função retorna true para cadeia de caracteres nula e vazia ''.

Números e matemática

23. Arredondar um número

Cenário: exibir um percentual 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 cadeia de caracteres.

Note

formatNumber() retorna uma cadeia de caracteres, não um número. Se você precisar fazer mais matemática sobre o valor arredondado, analise-o novamente: float(formatNumber(variables('value'), 'N2')).

24. Converter cadeia de caracteres em número (e voltar)

Cenário: um formulário ou email fornece um número como texto e você precisa fazer matemática com ele.

Expressão: int(variables('textNumber')) ou e float(variables('textNumber'))string(variables('numericValue'))

Exemplo: int('42') retorna 42. float('3.14') retorna 3.14. string(42) retorna '42'.

Importante

int() em uma cadeia de caracteres decimal, um erro é gerado; não é truncado. Se uma variável puder conter uma decimal, use float() primeiro: int(float(variables('input'))). Com valores constantes como int('3.14'), o erro é capturado em tempo de salvamento (InvalidTemplate), não em runtime.

25. Calcular porcentagem

Cenário: mostrar 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 part=75 e total=200, retorna 37.5.

Importante

Truncados de divisão inteiro. div(75, 200) retorna 0 porque ambos são inteiros. Sempre converter em float primeiro: div(float(75), float(200)) retorna 0.375.

Condicional e lógica

26. If/then/else em uma expressão

Cenário: retornar valores diferentes com base em uma condição, sem adicionar uma ação condição ao fluxo.

Expressão: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')

Exemplo: se o status for Approved, retornará Proceed. Caso contrário, retornará Wait.

Note

A if() função não dá suporte >a 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 preferencial, nome de exibição, email.

Expressão: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')

Exemplo: se preferredName for nulo e displayName for 'Alice', retornará Alice.

Dica

coalesce() ignora, mas não cadeias null de caracteres vazias ''. Uma cadeia de caracteres vazia é um valor não nulo válido. Combine com um auxiliar se cadeias de caracteres vazias também devem ser ignoradas: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Verifique se o valor é nulo ou vazio

Cenário: valide se um campo necessário tem um valor utilizável antes do processamento.

Expressão: empty(variables('input'))

Exemplo: empty('') retorna true. empty(null) retorna true. empty('hello') retorna false.

Importante

empty() não funciona em números. empty(0) lança um erro. Para números, use equals(variables('num'), null) ou verifique o tipo primeiro.

29. Comparar datas (a data A após a data B?)

Cenário: verifique se um prazo foi aprovado 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')) retorna true (18 de março é após 15 de março).

Importante

A comparação de cadeias de caracteres de data diretamente com greater('2026-03-18', '2026-03-15') o formato ISO (YYYY-MM-DD) porque ela classifica lexicograficamente. Mas falha em outros formatos. greater('03/18/2026', '12/01/2025') retorna false porque 0<1. Sempre use ticks() para comparação de data confiável.

30. Lógica booliana (AND/OR em condições)

Cenário: combinar várias condições em uma única expressão, por exemplo, valor > AND aprovado 1000.

Expressão: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))

Exemplo: retorna true somente se o status for igual Approved e a quantidade for maior que 1000.

Note

Você não pode encadear and/or com &&/|| sintaxe. Sempre use o formulário de função. Para lógica complexa, aninha-los: or(and(A, B), and(C, D)). A legibilidade degrada-se com aninhamento profundo. Considere usar uma ação Condição com várias linhas.

Cartão de referência rápida

Tarefa Expressão
Maiúsculas toUpper(value)
Letras minúsculas toLower(value)
Subcadeia de caracteres substring(value, start, length)
Substituir replace(value, old, new)
Divisão 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=Dom)
Dias entre div(sub(ticks(end), ticks(start)), 864000000000)
Primeiro item first(array)
Último item last(array)
Contagem length(array)
Entrar join(array, delimiter)
Analisar o 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 da cadeia de caracteres int(stringValue)
Flutuar da cadeia de caracteres float(stringValue)
AND and(condA, condB)
OU or(condA, condB)

Observação: o autor criou este artigo com a ajuda da IA. Saiba mais