Referência de funções CEL

A Common Expression Language (CEL) é uma linguagem de expressão simples criada pelo Google. A linguagem CEL é usada para escrever fórmulas de forma rápida, portátil e segura. Este guia mostra todas as funções que você pode usar ao escrever fórmulas para criar expressões poderosas.

É bom saber

Para saber mais, consulte os recursos oficiais:

Operações básicas (operadores)

A tabela a seguir mostra os símbolos básicos que você pode usar em suas fórmulas.

Símbolo

Descrição

Exemplo

/ Divide números 10 / 2 é igual a 5
== Verifica se dois valores são iguais idade == 18
<= Verifica se é menor ou igual a idade <= 65
- Subtrai números 100 - 20 é igual a 80
< Verifica se é menor que idade < 18
% Recebe o resto da divisão 10 % 3 é igual a 1
[índice] Obtém o item de uma lista ou um mapa lista[0] obtém o primeiro item
>= Verifica se é maior ou igual a idade >= 18
? : Se-então-senão idade >= 18 ? "adulto" : "menor"
!= Verifica se não é igual status != "pendente"
- (unário) Torna o número negativo -5
+ Adiciona números ou une texto 5 + 3 ou "Olá" + "Mundo"
! Oposto de verdadeiro/falso !verdadeiro é igual a falso
* Multiplica números 5 * 3 é igual a 15
> Verifica se é maior que idade > 18
\|\| OU - verdadeiro se qualquer um dos lados for verdadeiro idade < 13 \|\| idade > 65
&& E - verdadeiro somente se os dois lados forem verdadeiros idade >= 18 && optIn == verdadeiro

➡️ Para saber mais, consulte Operadores de CEL.

Funções disponíveis

Conversão entre tipos

As funções a seguir permitem que você altere os dados de um tipo para outro.

➡️ Para saber mais, consulte Conversões de tipo CEL.

bool() Converter em verdadeiro/falso

Converte texto ou outros valores em verdadeiro/falso.

Função

Entrada

Saída

Quando usar

bool(valor) valor verdadeiro/falso verdadeiro ou falso Quando você já tem verdadeiro/falso
bool(texto) Texto como “verdadeiro” ou “falso” verdadeiro ou falso Ao converter texto em verdadeiro/falso

Por exemplo:

bool(verdadeiro) // retorna: verdadeiro
 bool("verdadeiro") // retorna: verdadeiro (converte o texto em verdadeiro/falso)
 bool("falso") // retorna: falso

bytes() Converter em dados binários

Converte dados em bytes (formato binário bruto). A maioria dos usuários não precisará disso.

Função

Entrada

Saída

Quando usar

bytes(valor) Dados binários Dados binários Quando você já tem bytes
bytes(texto) Texto Dados binários Ao converter texto em binário

Por exemplo:

bytes(b'hello') // retorna: b'hello'
 bytes("hello") // retorna: b'hello' (converte texto em binário)

double() Converter em número decimal

Converte valores em números decimais (números com um ponto, como 3,14).

Função

Entrada

Saída

Quando usar

double(number) Número decimal Número decimal Quando você já tem um decimal
double(whole_number) Número inteiro Número decimal Converte 42 em 42,0
double(text) Texto como “3,14” Número decimal Converte texto em decimal

Por exemplo:

double(3.14)      // retorna: 3,14
 double(42) // retorna: 42.0 (adiciona ponto decimal)
 double("3.14")    // retorna: 3,14 (converte texto em número)
 double(100) // retorna: 100.0

int() Converter em número inteiro

Converte valores em números inteiros (sem casas decimais).

Função

Entrada

Saída

Quando usar

int(number) Número inteiro Número inteiro Quando você já tem um número inteiro
int(decimal) Número decimal Número inteiro Remove a parte decimal (3,8 torna-se 3)
int(duration) Período Número de segundos Converte “1h” em 3600
int(texto) Texto como “123” Número inteiro Converte texto em número
int(data_e_hora) Data/hora Número Converte em um carimbo de data e hora Unix

Por exemplo:

int(42)                                 // retorna: 42
int(3.14)                               // retorna: 3 (remove .14)
int(duration("1h"))                     // retorna: 3600 (segundos em 1 hora)
int("123")                              // retorna: 123 (converte texto)
int(timestamp("2024-01-01T00:00:00Z"))  // retorna: 1704067200

string() Converter em texto

Converte qualquer valor em texto.

Função

Entrada

Saída

Quando usar

string(texto) Texto Texto Quando você já tem o texto
string(verdadeiro_ou_falso) verdadeiro ou falso “verdadeiro” ou “falso” Converte verdadeiro/falso em texto
string(binário) Dados binários Texto Converte texto binário em texto legível
string(decimal) Número decimal Texto Converte 3,14 em “3,14”
string(duração) Período Texto Converte a duração em texto, como "3600s"
string(número) Número inteiro Texto Converte 123 em “123”
string(data_e_hora) Data/hora Texto Converte em uma string de data legível

Por exemplo:

string("hello")                        // retorna: "hello"
string(verdadeiro)                           // retorna: "verdadeiro"
string(3.14)                           // retorna: "3.14"
string(123)                            // retorna: "123"
string(timestamp("2024-01-01T00:00:00Z")) // retorna: "2024-01-01T00:00:00Z"

type() Descobrir o tipo de algo

Indica o tipo de dados que você possui (texto, número, verdadeiro/falso etc.).

Função

Entrada

Saída

Quando usar

type(qualquer coisa) Qualquer valor O nome do tipo Para verificar que tipo de dados você possui

Por exemplo:

type(42) // retorna: int (tipo número inteiro)
 type("hello") // retorna: string (tipo texto)
 tipo(3.14)        // retorna: double (tipo número decimal)
 type(true) // retorna: bool (tipo verdadeiro/falso)

Trabalho com datas e horas

As funções a seguir permitem trabalhar com datas, horas e carimbos de data e hora.

➡️ Para saber mais, consulte Carimbos de data/hora de CEL.

timestamp() Criar ou converter uma data/hora

Cria um valor de data e hora a partir de fontes diferentes.

Função

Entrada

Saída

Quando usar

timestamp(existente) Carimbo de data/hora existente Mesmo carimbo de data/hora Quando você já possui um carimbo de data e hora
timestamp(número) Número (segundos Unix) Data/hora Converte 1704067200 em uma data
timestamp(texto) Texto como “2024-01-01T00:00:00Z” Data/hora Converte texto em data/hora

Por exemplo:

timestamp("2024-01-01T00:00:00Z") // cria: 1 de janeiro de 2024 à meia-noite
 timestamp(1704067200) // cria: 2024-01-01T00:00:00Z

getFullYear() Obter o ano

Obtém o ano a partir de uma data (como 2024).

Função

Entrada

Saída

Quando usar

date.getFullYear() Nada (usar em uma data) Número do ano Obter o ano em horário UTC
date.getFullYear(timezone) Nome do fuso horário Número do ano Obter o ano em um fuso horário específico

Por exemplo:

timestamp("2024-01-15T10:30:00Z").getFullYear()                      // retorna: 2024
timestamp("2024-01-01T02:00:00Z").getFullYear("America/New_York")   // retorna: 2023 (noite de 31 de dezembro)
createdAt.getFullYear()                                              // obtém o ano de createdAt

getMonth() Obter o mês

Obtém o mês a partir de uma data.

❗️ Importante
Janeiro é 0, fevereiro é 1 etc.

Função

Entrada

Saída

Quando usar

date.getMonth() Nada (usar em uma data) Mês (0-11) Obter o mês em horário UTC
date.getMonth(timezone) Nome do fuso horário Mês (0-11) Obter o mês em um fuso horário específico

Por exemplo:

timestamp("2024-03-15T10:30:00Z").getMonth() // retorna: 2 (Março é o 3º mês)
 timestamp("2024-03-01T02:00:00Z").getMonth("America/New_York")     // retorna: 1 (fevereiro)
createdAt.getMonth()                                                // obtém o mês de createdAt

 // Lembre-se: Janeiro=0, Fevereiro=1, Março=2, Abril=3, Maio=4, Junho=5,
 // Julho=6, Agosto=7, Setembro=8, Outubro=9, Novembro=10, Dezembro=11

getDate() Obter o dia do mês

Obtém o dia do mês (1-31).

Função

Entrada

Saída

Quando usar

date.getDate() Nada (usar em uma data) Dia (1-31) Obter o dia em horário UTC
date.getDate(timezone) Nome do fuso horário Dia (1-31) Obter informações sobre o dia em um fuso horário específico

Por exemplo:

timestamp("2024-03-15T10:30:00Z").getDate() // retorna: 15 (o 15º dia)
 timestamp("2024-03-01T02:00:00Z").getDate("America/New_York")      // retorna: 28 (28 de fevereiro)
createdAt.getDate()                                                 // obtém o dia a partir de createdAt

getDayOfWeek() Obter o dia da semana

Obtém o dia da semana.

❗️ Importante
Domingo é 0, segunda-feira é 1 etc.

Função

Entrada

Saída

Quando usar

date.getDayOfWeek() Nada (usar em uma data) Dia (0-6) Obter o dia da semana em horário UTC
date.getDayOfWeek(timezone) Nome do fuso horário Dia (0-6) Obter informações sobre o dia da semana em um fuso horário específico

Por exemplo:

timestamp("2024-03-15T10:30:00Z").getDayOfWeek() // retorna: 5 (sexta-feira)
 timestamp("2024-03-17T02:00:00Z").getDayOfWeek("America/New_York") // retorna: 6 (sábado)

// Lembre-se: Domingo=0, Segunda-feira=1, Terça-feira=2, Quarta-feira=3,
// Quinta-feira=4, Sexta-feira=5, Sábado=6

getHours() Obter a hora

Obtém a hora a partir de um horário (0-23, onde 0 é meia-noite e 23 são 23h).

Função

Entrada

Saída

Quando usar

time.getHours() Nada (usar em uma data/hora) Hora (0-23) Obter a hora em UTC
time.getHours(timezone) Nome do fuso horário Hora (0-23) Obter a hora em um fuso horário específico
period.getHours() Nada (usar durante um período) Total de horas Contar as horas em um período

Por exemplo:

timestamp("2024-03-15T14:30:00Z").getHours() // retorna: 14 (14:30)
 timestamp("2024-03-15T14:30:00Z").getHours("America/New_York") // retorna: 10 (10:30 AM EST)
 duration("2h30m").getHours() // retorna: 2 horas

getMinutes() Obter os minutos

Obtém os minutos de um determinado horário (0-59).

Função

Entrada

Saída

Quando usar

time.getMinutes() Nada (usar em uma data/hora) Minutos (0-59) Obter minutos do tempo
time.getMinutes(timezone) Nome do fuso horário Minutos (0-59) Obter minutos em um fuso horário específico
period.getMinutes() Nada (usar durante um período) Total de minutos Contar o total de minutos em um período

Por exemplo:

timestamp("2024-03-15T14:45:00Z").getMinutes()                      // retorna: 45 minutos
timestamp("2024-03-15T14:45:00Z").getMinutes("America/New_York")   // retorna: 45 minutos
duration("2h30m").getMinutes()                                      // retorna: 150 (minutos no total)

getSeconds() Obter os segundos

Obtém os segundos de um horário (0-59).

Função

Entrada

Saída

Quando usar

time.getSeconds() Nada (usar em uma data/hora) Segundos (0-59) Obter os segundos do tempo
time.getSeconds(timezone) Nome do fuso horário Segundos (0-59) Obter os segundos em um fuso horário específico
period.getSeconds() Nada (usar durante um período) Total de segundos Contar o total de segundos em um período

Por exemplo:

timestamp("2024-03-15T14:45:30Z").getSeconds()                      // retorna: 30 segundos
timestamp("2024-03-15T14:45:30Z").getSeconds("America/New_York")   // retorna: 30 segundos
duration("2h30m45s").getSeconds()                                   // retorna: 9045 (total de segundos)

Trabalho com períodos

As funções a seguir permitem criar e trabalhar com durações (períodos).

➡️ Para saber mais, consulte Duração de CEL.

duration() Criar um período

Cria uma duração que representa um período (não uma data específica).

Função

Entrada

Saída

Quando usar

duration(existente) Duração existente Mesma duração Quando você já tem uma duração
duration(segundos) Número de segundos Período Cria uma duração em segundos
duration(texto) Texto como “1h30m” ou “90s” Período Cria duração a partir do texto

Por exemplo:

duration(3600)              // cria: 1 hora (3600 segundos)
duration("1h30m")           // cria: 1 hora e 30 minutos
duration("90s")             // cria: 90 segundos
duration("2h")              // cria: 2 horas

Formato de período: use h para horas, m para minutos e s para segundos. Combine-os da seguinte forma: “1h30m15s”.

Funções de texto

As funções a seguir permitem que você trabalhe com texto (strings).

➡️ Para saber mais, consulte Funções de string de CEL.

contains() Verifica se o texto contém algo

Verifica se um trecho de texto está dentro de outro.

Função

Entrada

Saída

Quando usar

text.contains(search) Texto a pesquisar verdadeiro ou falso Verificar se o texto contém algo

Por exemplo:

"hello world".contains("world")     // retorna: verdadeiro (encontrei!)
"hello world".contains("xyz")       // retorna: falso (não encontrado)
 status.contains("ativo")           // verifica se status contém "ativo"
 contato.email.contains("@")         // verifica se o e-mail contém o símbolo @

startsWith() Verificar se o texto começa com algo

Verifica se o texto começa com caracteres específicos.

Função

Entrada

Saída

Quando usar

text.startsWith(prefix) Texto a verificar no início verdadeiro ou falso Verificar como o texto começa

Por exemplo:

"hello world".startsWith("hello")           // retorna: verdadeiro
"hello world".startsWith("world")           // retorna: falso (começa com "hello" e não com "world")
contact.email.startsWith("admin")           // verifica se o e-mail começa com "admin"
status.startsWith("pending")                // verifica se o status começa com "pending"

endsWith() Verificar se o texto termina com algo

Verifica se o texto termina com caracteres específicos.

Função

Entrada

Saída

Quando usar

text.endsWith(suffix) Texto a verificar no final verdadeiro ou falso Verificar como o texto termina

Por exemplo:

"hello world".endsWith("world")             // retorna: verdadeiro
"hello world".endsWith("hello")             // retorna: falso (termina com "world" e não com "hello")
contact.email.endsWith("@example.com") // verifica se o domínio do e-mail é @example.com
status.endsWith("_approved")                // verifica se o status termina com "_approved"

matches() Verificar se o texto corresponde a um padrão

Verifica se o texto corresponde a um padrão (usa expressões regulares - recurso avançado).

Função

Entrada

Saída

Quando usar

matches(text, pattern) Texto e padrão verdadeiro ou falso Verificar se o texto está de acordo com um padrão
text.matches(pattern) Padrão a verificar verdadeiro ou falso Verificar se o texto corresponde ao padrão

Por exemplo:

// Verificar se o texto se parece com um e-mail
"test@example.com".matches("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$")    // retorna: verdadeiro
"not-an-email".matches("^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$")        // retorna: falso

// Validar formato de e-mail
contact.email.matches("^[a-z]+@[a-z]+\\.[a-z]+$")                   // verifica o formato do e-mail
💡 É bom saber
Expressões regulares são padrões avançados para correspondência de texto. O exemplo acima verifica o formato de um e-mail. Saiba mais sobre padrões de expressões regulares.

trim() Remover caracteres das duas extremidades

Remove caracteres específicos do início e do fim do texto (como remover espaços).

Função

Entrada

Saída

Quando usar

trim(texto, caracteres) Texto e o que remover Texto limpo Remover os caracteres das duas extremidades

Por exemplo:

trim("  hello  ", " ")      // retorna: "hello" (espaço removidos)
trim("###test###", "#")     // retorna: "test" (símbolos # removidos)
trim("___name___", "_")     // retorna: "name" (sublinhados removidos)
trim("000123000", "0")      // retorna: "123" (zeros removidos)

ltrim() Remover caracteres da esquerda (Início)

Remove caracteres específicos apenas do início do texto.

Função

Entrada

Saída

Quando usar

ltrim(texto, caracteres) Texto e o que remover Texto limpo Remover caracteres apenas do início

Por exemplo:

ltrim("  hello  ", " ")     // retorna: "hello  " (espaços removidos da esquerda)
ltrim("###test###", "#")    // retorna: "test###" (# removido da esquerda)
ltrim("000123", "0")        // retorna: "123" (zeros removidos da esquerda)

rtrim() Remover caracteres da direita (Fim)

Remove caracteres específicos apenas do final do texto.

Função

Entrada

Saída

Quando usar

rtrim(texto, caracteres) Texto e o que remover Texto limpo Remover caracteres apenas do final

Por exemplo:

rtrim("  hello  ", " ")     // retorna: "  hello" (espaços removidos da direita)
rtrim("###test###", "#")    // retorna: "###test" (# removido da direita)
rtrim("123000", "0")        // retorna: "123" (zeros removidos da direita)

Funções matemáticas

As funções a seguir são para cálculos matemáticos.

➡️ Para saber mais, consulte Funções numéricas de CEL.

abs() Obter o valor absoluto

Remove o sinal negativo de um número (tornando-o positivo).

Função

Entrada

Saída

Quando usar

abs(número) Qualquer número inteiro Número positivo Remover o sinal negativo

Por exemplo:

abs(-5) // retorna: 5
abs(10) // retorna: 10 (já positivo)
abs(-100) // retorna: 100
abs(0) // retorna: 0

round() Arredondar para o número inteiro mais próximo

Arredonda um número decimal para o número inteiro mais próximo.

Função

Entrada

Saída

Quando usar

round(decimal) Número decimal Número inteiro Arredondar para o número mais próximo

Por exemplo:

round(3.7) // retorna: 4 (arredonda para cima)
round(3.2) // retorna: 3 (arredonda para baixo)
round(3,5)                  // retorna: 4 (exatamente a metade, arredondado para cima)
round(-2,5)                 // retorna: -2
round(valor) // arredonda a variável de valor
💡 É bom saber
Valores iguais ou superiores a 3,5 são arredondados para cima, valores inferiores a 3,5 são arredondados para baixo.

roundUp() Sempre arredondar para cima

Arredonda sempre para o próximo número inteiro (teto).

Função

Entrada

Saída

Quando usar

roundUp(decimal) Número decimal Número inteiro Sempre arredondar para cima

Por exemplo:

roundUp(3.2) // retorna: 4 (arredonda para cima mesmo estando próximo de 3)
roundUp(3.9)                // retorna: 4
roundUp(3.0)                // retorna: 3 (já inteiro)
roundUp(-2.5)               // retorna: -2

roundDown() Sempre arredondar para baixo

Arredonda sempre para baixo, para o número inteiro anterior (piso).

Função

Entrada

Saída

Quando usar

roundDown(decimal) Número decimal Número inteiro Arredondar sempre para baixo

Por exemplo:

roundDown(3.8)              // retorna: 3 (arredonda para baixo mesmo estando próximo de 4)
roundDown(3.2)              // retorna: 3
roundDown(3.0)              // retorna: 3 (já inteiro)
roundDown(-2.5)             // retorna: -3

min() Encontrar o menor número

Retorna o menor de dois números.

Função

Entrada

Saída

Quando usar

min(número1, número2) Dois números O menor Descobrir qual número é menor

Por exemplo:

min(5, 10) // retorna: 5 (número menor)
min(-3, 2) // retorna: -3 (números negativos são menores)
min(idade, 100) // retorna: o menor valor entre idade e 100
min(3.5, 5) // retorna: 3

Caso de uso: min(idade, 65) garante que a idade não exceda 65.

max() Descobrir o número maior

Retorna o maior dos dois números.

Função

Entrada

Saída

Quando usar

máximo(número1, número2) Dois números O maior deles Descobrir qual número é maior

Por exemplo:

max(5, 10) // retorna: 10 (número maior)
 max(-3, 2) // retorna: 2
max(idade, 18) // retorna: o que for maior, idade ou 18
 máx(3,5, 5)                 // retorna: 5

Caso de uso: max(idade, 18) garante que a idade seja pelo menos 18.

Funções de lista e mapa

As funções a seguir permitem trabalhar com listas (coleções ordenadas) e mapas (pares de chave-valor).

➡️ Para saber mais, consulte Listas de CEL e Mapas de CEL.

size() Contar itens

Conta quantos itens existem em uma lista, um mapa ou quantos caracteres há em um texto.

Função

Entrada

Saída

Quando usar

size(coleção) Lista, mapa ou texto Número de itens Contar itens ou caracteres
collection.size() Nada (usar em lista/mapa/texto) Número de itens Contar itens ou caracteres

Por exemplo:

size([1, 2, 3]) // retorna: 3 (três itens na lista)
[1, 2, 3].size() // retorna: 3
partners.size()             // retorna: quantos parceiros você tem
size({"a": 1, "b": 2}) // retorna: 2 (dois pares de chave-valor)
addresses.size()            // retorna: quantos endereços você tem
size("olá") // retorna: 5 (cinco letras)
"hello".size()              // retorna: 5
contact.email.size() > 5 // verifica se o e-mail tem mais de 5 caracteres

in() Verificar se o item existe

Verifica se um valor existe em uma lista ou se uma chave existe em um mapa.

Função

Entrada

Saída

Quando usar

valor na lista Valor e lista verdadeiro ou falso Verificar se o item está em uma lista
chave no mapa Chave e mapa verdadeiro ou falso Verificar se a chave existe em um mapa

Por exemplo:

5 em [1, 2, 3, 4, 5] // retorna: verdadeiro (5 está na lista)
10 em [1, 2, 3] // resulta em: falso (10 não está na lista)
"ativo" em ["ativo", "pendente", "concluído"] // retorna: verdadeiro
"nome" em {"name": "John", "age": 30} // retorna: verdadeiro (a chave "nome" existe)
"e-mail" em {"name": "John", "age": 30} // retorna: falso (nenhuma chave "e-mail")
"início" nos endereços // verifica se o endereço "início" existe

Nossas recomendações para iniciantes

Para saber mais, confira: 

Compreendendo os tipos de dados

Para saber mais, consulte Sistema de tipos de CEL.

  • Texto (string): palavras e frases, sempre entre aspas: "hello"
  • Números (int): números inteiros sem aspas: 42
  • Decimais (duplo): números com casas decimais: 3.14
  • Verdadeiro/Falso (bool): apenas verdadeiro ou falso, sem aspas.
  • Listas: vários itens entre colchetes: [1, 2, 3] ou ["a", "b", "c"]
  • Mapas: pares de chave-valor entre chaves: {"name": "John", "age": 30}

Uso de funções membro (notação de ponto)

Algumas funções são chamadas usando um ponto (.) depois do valor:

"hello".contains("e") // Verificar se "hello" contém "e"
[1, 2, 3].size() // Contar os itens na lista
timestamp("2024-01-01T00:00:00Z").getFullYear()  // Obter o ano a partir da data

Uso de funções regulares

Outras funções envolvem o valor:

int("123") // Converter texto em número
round(3.7)                      // Arredondar decimal para número inteiro
min(5, 10) // Encontrar o menor número

Combinação de funções

Você pode aninhar funções umas dentro das outras:

string(round(3.7))              // Primeiro arredonda 3,7 para 4, depois converte em "4"
int(duration("1h")) // Converte 1 hora em 3600 segundos

Fusos horários

Algumas funções de data aceitam um fuso horário (como “America/New_York” ou “Europe/Paris”):

createdAt.getHours()                    // Obtém a hora em UTC (horário universal)
createdAt.getHours("America/New_York") // Recebe uma hora no horário de Nova York

Lembrate

  • Os meses começam em 0: janeiro é 0, dezembro é 11
  • Os dias da semana começam em 0: domingo é 0, sábado é 6
  • As horas são indicadas no formato de 24 horas: 0 é meia-noite, 13 é 13h, 23 é 23h
  • Use aspas para o texto: "hello" e não hello
  • Sem aspas para números: 42 e não "42"

⏭️ O que vem a seguir?

🤔 Dúvidas?

Em caso de dúvida, sinta-se à vontade para entrar em contato com nossa equipe de suporte, criando um tíquete a partir da sua conta. Caso ainda não tenha uma conta, entre em contato conosco aqui.

Se você está procurando ajuda com um projeto usando o Brevo, podemos encontrar à agência parceira da Brevo certa.

💬 Este artigo foi útil?

0 de 0 acharam isto útil