Menu
Feedback
Tutoriais
Fluxos
Glossário de Expressões
19 min de leitura

Visão geral

Expressões são fórmulas utilizadas na plataforma de forma muito semelhante às usadas em programas de planilha, como a do Microsoft Excel. Embora tenham evoluído com o tempo e essas semelhanças sejam muito menores agora. É uma linguagem de modelagem baseada em expressões que visa facilitar a geração de texto a partir de um contexto de valores.

Nesse artigo trataremos um pouco sobre:

  • Modelos
  • Tipos
  • Operadores
  • Funções

Modelos

Expressões podem ser chamadas usando o seguinte modelo: @(...).

Por exemplo, o modelo Hi @(""Dr "" & upper(foo))pega o valor da variável @foo, converte para maiúsculas e o prefixa com outra palavra. Observe que dentro de uma expressão complexa você não precisa colocar @ antes de todas as variáveis.

Tipos

Temos os seguintes tipos de expressões aceitos na plataforma: Array: usado para a criação de um array de itens:


@(array(1, ""x"", true)) → [1, x, true]
@(array(1, ""x"", true)[1]) → x
@(count(array(1, ""x"", true))) → 3
@(json(array(1, ""x"", true))) → [1,""x"",true]

Booleano: é um booleano verdadeiroou falso


@(true) → true
@(1 = 1) → true
@(1 = 2) → false
@(json(true)) → true

Data: é um valor de data do calendário gregoriano


@(date_from_parts(2019, 4, 11)) → 2019-04-11@(format_date(date_from_parts(2019, 4, 11))) → 11-04-2019@(json(date_from_parts(2019, 4, 11))) → ""2019-04-11""

Data e Hora: é um valor de data e hora


@(datetime(""1979-07-18T10:30:45.123456Z"")) → 1979-07-18T10:30:45.123456Z
@(format_datetime(datetime(""1979-07-18T10:30:45.123456Z""))) → 18-07-1979 05:30@(json(datetime(""1979-07-18T10:30:45.123456Z""))) → ""1979-07-18T10:30:45.123456Z""

Função: é uma função que pode ser chamada


@(upper) → function
@(array(upper)[0](""abc"")) → ABC
@(json(upper)) → null

Número: é um número inteiro ou fracionado


@(1234) → 1234
@(1234.5678) → 1234.5678
@(format_number(1234.5670)) → 1,234.567
@(json(1234.5678)) → 1234.5678

Objeto: é um objeto com propriedades nomeadas


@(object(""foo"", 1, ""bar"", ""x"")) → \{bar: x, foo: 1\}
@(object(""foo"", 1, ""bar"", ""x"").bar) → x
@(object(""foo"", 1, ""bar"", ""x"")[""bar""]) → x
@(count(object(""foo"", 1, ""bar"", ""x""))) → 2
@(json(object(""foo"", 1, ""bar"", ""x""))) → \{""bar"":""x"",""foo"":1\}

Texto: é uma sequência de caracteres


@(""abc"") → abc
@(text_length(""abc"")) → 3
@(upper(""abc"")) → ABC
@(json(""abc"")) → ""abc""

Tempo: é uma hora do dia


@(time_from_parts(16, 30, 45)) → 16:30:45.000000@(format_time(time_from_parts(16, 30, 45))) → 16:30@(json(time_from_parts(16, 30, 45))) → ""16:30:45.000000""

Operadores

Abaixo, segue a lista de todos os operadores que podem ser utilizados na construção de expressões na plataforma: + : soma dois números


@(2 + 3) → 5
@(fields.age + 10) → 33

& : une dois valores de texto


@(""hello"" & "" "" & ""bar"") → hello bar
@(""hello"" & null) → hello

/ : divide um número por outro


@(4 / 2) → 2@(3 / 2) → 1.5
@(46 / fields.age) → 2
@(3 / 0) → ERROR

= : retorna ""true"" se dois valores são textualmente iguais


@(""hello"" = ""hello"") → true
@(""hello"" = ""bar"") → false
@(1 = 1) → true

^ : ele um número à potência de outro


@(2 ^ 8) → 256

> : retorna ""true"" se o primeiro número for maior que o segundo


@(2 > 3) → false@(3 > 3) → false@(4 > 3) → true

> = : retorna ""true"" se o primeiro número for maior que ou igual ao segundo


@(2 >= 3) → false
@(3 >= 3) → true
@(4 >= 3) → true

< : retorna ""true"" se o primeiro número for menor que o segundo


@(2 < 3) → true
@(3 < 3) → false
@(4 < 3) → false

< = : retorna ""true"" se o primeiro número for menor que ou igual ao segundo


@(2 <= 3) → true
@(3 <= 3) → true
@(4 <= 3) → false

***** : multiplica dois números


@(3 * 2) → 6
@(fields.age * 3) → 69

- (un ário) : nega um número


@(-fields.age) → -23

! : retorna ""true"" se dois valores não são textualmente iguais


@(""hello"" != ""hello"") → false
@(""hello"" != ""bar"") → true
@(1 != 2) → true

- (bin ário) : subtrai dois números


@(3 - 2) → 1
@(2 - 3) → -1

Funções

As expressões têm acesso a um conjunto de funções internas que podem ser usadas para executar tarefas mais complexas. As funções são chamadas usando a sintaxe @(function_name(args..)) e podem assumir como argumentos valores literais @(length(split(""1 2 3"", "" ""))ou variáveis no contexto@(title(contact.name).

abs(número): retorna o valor absoluto de number.


@(abs(-10)) → 10
@(abs(10.5)) → 10.5
@(abs(""foo"")) → ERROR

and(valores...): retorna se todos os dados de valuessão verdadeiros


@(and(true)) → true
@(and(true, false, true)) → false

array(valores...): toma vários valuese os retorna como uma matriz.


@(array(""a"", ""b"", 356)[1]) → b
@(join(array(""a"", ""b"", ""c""), ""|"")) → a|b|c
@(count(array())) → 0
@(count(array(""a"", ""b""))) → 2

attachment_parts(anexo): analisa um anexo em suas diferentes partes


@(attachment_parts(""image/jpeg:https://example.com/test.jpg"")) → \{content_type: image/jpeg, url: https://example.com/test.jpg\}

boolean(valor): tenta converter valuepara um booleano. Um erro será retornado se o valor não puder ser convertido.


@(boolean(array(1, 2))) → true
@(boolean(""FALSE"")) → false
@(boolean(1 / 0)) → ERROR

char(código): retorna o caractere para UNICODE fornecido code. É o inverso do código.


@(char(33)) → !
@(char(128512)) → 😀
@(char(""foo"")) → ERROR

clean(texto): remove todos os caracteres não imprimíveis de text. É o inverso de char.


@(clean(""😃 Hello \nwo\tr\rld"")) → 😃 Hello world
@(clean(123)) → 123

code(texto): retorna o código UNICODE para o primeiro caractere de text. É o inverso do char.


@(code(""a"")) → 97
@(code(""abc"")) → 97
@(code(""😀"")) → 128512
@(code(""15"")) → 49
@(code(15)) → 49
@(code("""")) → ERROR

count(valor): retorna o número de itens na matriz ou propriedades especificadas em um objeto. Ele retornará um erro se for passado um item que não é contável.


@(count(contact.fields)) → 5
@(count(array())) → 0
@(count(array(""a"", ""b"", ""c""))) → 3
@(count(1234)) → ERROR

date(valor): tenta converter (valor)para uma data. Se for texto, ele será analisado em uma data usando o formato de data padrão. Um erro será retornado se o valor não puder ser convertido.


@(date(""1979-07-18"")) → 1979-07-18
@(date(""1979-07-18T10:30:45.123456Z"")) → 1979-07-18@(date(""10/05/2010"")) → 2010-05-10
@(date(""NOT DATE"")) → ERROR

date_from_parts(ano, mês, dia): cria uma data de year``month``day.


@(date_from_parts(2017, 1, 15)) → 2017-01-15
@(date_from_parts(2017, 2, 31)) → 2017-03-03
@(date_from_parts(2017, 13, 15)) → ERROR

datetime(valor): tenta converter valuepara um datatime. Se for texto, ele será analisado em uma data e hora usando os formatos padrão de data e hora. Um erro será retornado se o valor não puder ser convertido.


@(datetime(""1979-07-18"")) → 1979-07-18T00:00:00.000000-05:00@(datetime(""1979-07-18T10:30:45.123456Z"")) → 1979-07-18T10:30:45.123456Z
@(datetime(""10/05/2010"")) → 2010-05-10T00:00:00.000000-05:00
@(datetime(""NOT DATE"")) → ERROR

datetime_ad (datetime, offset, unit): Calcula o valor da data alcançada adicionando o offsetnúmero de unitao datetime. As durações válidas são ""Y"" para anos, ""M"" para meses, ""W"" para semanas, ""D"" para dias, ""h"" para horas, ""m"" para minutos e ""s"" para segundos.


@(datetime_add(""2017-01-15"", 5, ""D"")) → 2017-01-20T00:00:00.000000-05:00
@(datetime_add(""2017-01-15 10:45"", 30, ""m"")) → 2017-01-15T11:15:00.000000-05:00

datetime_diff(date1``date2``unidade): retorna a duração entre date1e date2no unitespecificado. As durações válidas são ""Y"" para anos, ""M"" para meses, ""W"" para semanas, ""D"" para dias, ""h"" para horas, ""m"" para minutos e ""s"" para segundos.


@(datetime_diff(""2017-01-15"", ""2017-01-17"", ""D"")) → 2@(datetime_diff(""2017-01-15"", ""2017-05-15"", ""W"")) → 17@(datetime_diff(""2017-01-15"", ""2017-05-15"", ""M"")) → 4
@(datetime_diff(""2017-01-17 10:50"", ""2017-01-17 12:30"", ""h"")) → 1@(datetime_diff(""2017-01-17"", ""2015-12-17"", ""Y"")) → -2

datetime_from_epoch(segundos): converte o horário da época UNIX secondsem uma nova data.


@(datetime_from_epoch(1497286619)) → 2017-06-12T11:56:59.000000-05:00@(datetime_from_epoch(1497286619.123456)) → 2017-06-12T11:56:59.123456-05:00

default(valor, padrão): retorna valuese não estiver vazio ou com erro, caso contrário ele retornarádefault.


@(default(undeclared.var, ""default_value"")) → default_value@(default(""10"", ""20"")) → 10
@(default("""", ""value"")) → value
@(default("" "", ""value"")) → \x20\x20
@(default(datetime(""invalid-date""), ""today"")) → today@(default(format_urn(""invalid-urn""), ""ok"")) → ok

epoch(data): converte dateem um horário de época UNIX. O número retornado pode conter segundos fracionários.


@(epoch(""2017-06-12T16:56:59.000000Z"")) → 1497286619
@(epoch(""2017-06-12T18:56:59.000000+02:00"")) → 1497286619@(epoch(""2017-06-12T16:56:59.123456Z"")) → 1497286619.123456@(round_down(epoch(""2017-06-12T16:56:59.123456Z""))) → 1497286619

extract(objeto, propriedades): pega um objeto e extrai a propriedade nomeada.


@(extract(contact, ""name"")) → Ryan Lewis
@(extract(contact.groups[0], ""name"")) → Testers

extract_object(objeto, propriedades...): pega um objeto e retorna um novo objeto extraindo apenas as propriedades nomeadas.


@(extract_object(contact.groups[0], ""name"")) → \{name: Testers\}

field(texto, índice, delimitador): divide textusando o dadodelimitere retorna o campo index. O índice começa em zero. Ao dividir com um espaço, o delimitador é considerado como todo o espaço em branco.


@(field(""a,b,c"", 1, "","")) → b
@(field(""a,,b,c"", 1, "","")) →
@(field(""a b c"", 1, "" "")) → b
@(field(""a b c d"", 1, "" "")) →
@(field(""a\t\tb\tc\td"", 1, "" "")) →
@(field(""a,b,c"", ""foo"", "","")) → ERROR

foreach(valores, func, [argumentos...]): cria uma nova matriz aplicando funca cada valor emvalues. Se a função fornecida receber mais de um argumento, você poderá passar argumentos adicionais após a função.


@(foreach(array(""a"", ""b"", ""c""), upper)) → [A, B, C]@(foreach(array(""the man"", ""fox"", ""jumped up""), word, 0)) → [the, fox, jumped]

foreach_value(objeto, func, [args...]): cria um novo objeto aplicando funca cada valor de propridade object. Se a função fornecida receber mais de um argumento, você poderá passar argumentos adicionais após a função.


@(foreach_value(object(""a"", ""x"", ""b"", ""y""), upper)) → \{a: X, b: Y\}@(foreach_value(object(""a"", ""hi there"", ""b"", ""good bye""), word, 1)) → \{a: there, b: bye\}

format(valor): formatos de valuede acordo com seu tipo.


@(format(1234.5670)) → 1,234.567
@(format(now())) → 11-04-2018 13:24
@(format(today())) → 11-04-2018

format_date(data, [, formato]): formatadatecomo texto de acordo com o dadoformat. Seformatnão for especificado, o formato padrão do ambiente será usado. A cadeia de formato pode consistir nos seguintes caractere. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • YY- últimos dois dígitos do ano 0-99

  • YYYY- quatro dígitos do ano 0000-9999

  • M- retorna o mês, sem o zero 1-12

  • MM- retorna o mês com o zero preenchido 01-12

  • D- dia do mês 1-31

  • DD- dia do mês, zero preenchido 01-31

    @(format_date(""1979-07-18T15:00:00.000000Z"")) → 18-07-1979@(format_date(""1979-07-18T15:00:00.000000Z"", ""YYYY-MM-DD"")) → 1979-07-18@(format_date(""2010-05-10T19:50:00.000000Z"", ""YYYY M DD"")) → 2010 5 10@(format_date(""1979-07-18T15:00:00.000000Z"", ""YYYY"")) → 1979 @(format_date(""1979-07-18T15:00:00.000000Z"", ""M"")) → 7 @(format_date(""NOT DATE"", ""YYYY-MM-DD"")) → ERROR format_datetime (data e hora [, formato [, fuso horário]]) Formata datetime como texto de acordo com o dado format. Se formatnão for especificado, o formato padrão do ambiente será usado. A cadeia de contato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • YY- últimos dois dígitos do ano 0-99

  • YYYY- quatro dígitos do ano 0000-9999

  • M- retorna o mês, sem o zero 1-12

  • MM- retorna o mês com o zero preenchido 01-12

  • D- dia do mês 1-31

  • DD- dia do mês, zero preenchido 01-31

  • h- hora do dia 1-12

  • hh- hora do dia 01-12

  • tt- vinte de quatro horas do dia 00-23

  • m- minuto sem o zero preenchido 0-59

  • mm- minuto com o zero preenchido 00-59

  • s- segundo sem o zero preenchido 0-59

  • ss- segundo sem o zero preenchido 00-59

  • fff- milissegundos

  • ffffff- microssegundos

  • fffffffff- nanosegundos

  • aa- AM ou PM

  • AA- AM ou PM

  • Z- deslocamento de hora e minuto do UTC ou Z do UTC

  • ZZZ- deslocamento de hora e minuto do UTC

O fuso horário deve ser o nome de local, conforme especificado no bando de dados do fuso horário da IANA, como """"America / Guayaquil"" ou ""America / Los_Angeles"". Se não especificado, o fuso horário atual será usado. Um erro será retornado se o fuso horário não for reconhecido.


@(format_datetime(""1979-07-18T15:00:00.000000Z"")) → 18-07-1979 10:00@(format_datetime(""1979-07-18T15:00:00.000000Z"", ""YYYY-MM-DD"")) → 1979-07-18
@(format_datetime(""2010-05-10T19:50:00.000000Z"", ""YYYY M DD tt:mm"")) → 2010 5 10 14:50
@(format_datetime(""2010-05-10T19:50:00.000000Z"", ""YYYY-MM-DD hh:mm AA"", ""America/Los_Angeles"")) → 2010-05-10 12:50 PM
@(format_datetime(""1979-07-18T15:00:00.000000Z"", ""YYYY"")) → 1979@(format_datetime(""1979-07-18T15:00:00.000000Z"", ""M"")) → 7
@(format_datetime(""NOT DATE"", ""YYYY-MM-DD"")) → ERROR

format_location(local): formata o dadolocationcomo seu nome.


@(format_location(""Rwanda"")) → Rwanda
@(format_location(""Rwanda > Kigali"")) → Kigali

format_number(número, lugares [, humanizar]): formata numbero número decimal especificado places. Um terceiro argumento opcional humanizepode ser falso para desativar o uso de mil separadores.


@(format_number(1234)) → 1,234@(format_number(1234.5670)) → 1,234.567@(format_number(1234.5670, 2, true)) → 1,234.57@(format_number(1234.5678, 0, false)) → 1235@(format_number(""foo"", 2, false)) → ERROR

format_time (hora, [, formato]): formata timecomo texto de acordo com o dato format . Se formatnão for especificado, o formato padrão do ambiente será usado. A cadeia de formato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • h- hora do dia 1-12

  • hh- hora do dia 01-12

  • tt- vinte de quatro horas do dia 00-23

  • m- minuto sem o zero preenchido 0-59

  • mm- minuto com zero preenchido 00-59

  • s- segundo sem o zero preenchido 0-59

  • ss- segundo com o zero preencido 00-59

  • fff- milissegundos

  • ffffff- microssegundos

  • fffffffff- nanosegundos

  • aa- AM ou PM

  • AA- AM ou PM

    @(format_time(""14:50:30.000000"")) → 14:50@(format_time(""14:50:30.000000"", ""h:mm aa"")) → 2:50 pm@(format_time(""15:00:27.000000"", ""s"")) → 27 @(format_time(""NOT TIME"", ""hh:mm"")) → ERROR format_urn(urn): formataurnem texto amigável para humanos.

    @(format_urn(""tel:+250781234567"")) → 0781 234 567@(format_urn(""twitter:134252511151#billy_bob"")) → billy_bob@(format_urn(contact.urn)) → (202) 456-1111 @(format_urn(urns.tel)) → (202) 456-1111 @(format_urn(urns.mailto)) → foo@bar.com @(format_urn(""NOT URN"")) → ERROR html_decode(texto): decodificações HTMLtext

    @(html_decode(""Red & Blue"")) → Red & Blue @(html_decode(""5 + 10"")) → 5 + 10 if (teste, valor1, valor2): retorna value1se testé verdade e value2se não. Se o primeiro argumento for um erro, esse erro será retornado.

    @(if(1 = 1, ""foo"", ""bar"")) → foo @(if(""foo"" > ""bar"", ""foo"", ""bar"")) → ERROR is_error(valor): retorna se valuetiver um erro.

    @(is_error(datetime(""foo""))) → true @(is_error(run.not.existing)) → true @(is_error(""hello"")) → false join(matriz, separador): associa o dadoarrayde strings comseparatorpara citar texto.

    @(join(array(""a"", ""b"", ""c""), ""|"")) → a|b|c @(join(split(""a.b.c"", "".""), "" "")) → a b c json(valor): retorna a representação JSON de value.

    @(json(""string"")) → ""string"" @(json(10)) → 10 @(json(null)) → null @(json(contact.uuid)) → ""5d76d86b-3bb9-4d5a-b822-c9d86f5d8e4f"" lower(texto): converte textpara minúsculas.

    @(lower(""HellO"")) → hello @(lower(""hello"")) → hello @(lower(""123"")) → 123 @(lower(""😀"")) → 😀 max (números...): retorna o valor máximo emnumbers.

    @(max(1, 2)) → 2 @(max(1, -1, 10)) → 10 @(max(1, 10, ""foo"")) → ERROR mean(números...): retorna a média aritmética denumbers.

    @(mean(1, 2)) → 1.5 @(mean(1, 2, 6)) → 3 @(mean(1, ""foo"")) → ERROR min(números...): retorna o valor mínimo em numbers.

    @(min(1, 2)) → 1 @(min(2, 2, -10)) → -10 @(min(1, 2, ""foo"")) → ERROR mod(dividendo, divisor): retorna o restante da divisão de dividendpor divisor.

    @(mod(5, 2)) → 1 @(mod(4, 2)) → 0 @(mod(5, ""foo"")) → ERROR now(): retorna a data e a hora atuais no fuso horário atual.

    @(now()) → 2018-04-11T13:24:30.123456-05:00 number(valores): tenta converter valuepara um número. Um erro será retornado se o valor não puder ser convertido.

    @(number(10)) → 10 @(number(""123.45000"")) → 123.45 @(number(""what?"")) → ERROR object(pares...): pega os pares de valores do nome da propriedade e os retorna como um novo objeto.

    @(object()) → {} @(object(""a"", 123, ""b"", ""hello"")) → {a: 123, b: hello} @(object(""a"")) → ERROR or(valores...): retorna se algum dos dados valuesé verdadeiro.

    @(or(true)) → true @(or(true, false, true)) → true parse_datetime(texto, formato [, fuso horário]): analisa textem uma data usando o dadoformat. A cadeia de formato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • YY- últimos dois dígitos do ano 0-99

  • YYYY- quatro dígitos do ano 0000-9999

  • M- mês 1-12

  • MM- mês 01-12

  • D- dia do mês sem o zero preenchido 1-31

  • DD- dia do mês, zero preenchido 01-31

  • h- hora do dia sem o zero preenchido 1-12

  • hh- hora do dia com o zero preenchido 01-12

  • tt- vinte de quatro horas do dia 00-23

  • m- minuto sem o zero preenchido 0-59

  • mm- minuto com o zero preenchido 00-59

  • s- segundo sem o zero preenchido 0-59

  • ss- segundo com o zero preenchido 00-59

  • fff- milissegundos

  • ffffff- microssegundos

  • fffffffff- nanosegundos

  • aa- AM ou PM

  • AA- AM ou PM

  • Z- deslocamento de hora e minuto do UTC ou Z do UTC

  • ZZZ- deslocamento de hora e minuto do UTC

O fuso horário deve ser o nome de local, conforme especificado no bando de dados do fuso horário da IANA, como """"America / Guayaquil"" ou ""America / Los_Angeles"". Se não especificado, o fuso horário atual será usado. Um erro será retornado se o fuso horário não for reconhecido.

Observe que os segundos fracionários serão analisados mesmo sem um identificador de formato explícito. Você deve especificar apenas segundos fracionários quando desejar afirmar o número de lugares no formato de entrada.

parse_datetime retornará um erro se não conseguir converter o texto em uma datetime.


@(parse_datetime(""1979-07-18"", ""YYYY-MM-DD"")) → 1979-07-18T00:00:00.000000-05:00
@(parse_datetime(""2010 5 10"", ""YYYY M DD"")) → 2010-05-10T00:00:00.000000-05:00@(parse_datetime(""2010 5 10 12:50"", ""YYYY M DD tt:mm"", ""America/Los_Angeles"")) → 2010-05-10T12:50:00.000000-07:00
@(parse_datetime(""NOT DATE"", ""YYYY-MM-DD"")) → ERROR

parse_json(texto): tenta analisar textcomo JSON. Se o textJSON fornecido não for válido, será retornado um erro.


@(parse_json(""\{\""foo\"": \""bar\""\}"").foo) → bar
@(parse_json(""[1,2,3,4]"")[2]) → 3
@(parse_json(""invalid json"")) → ERROR

parse_time(texto, formato): analisa textem um tempo usando o dadoformat. A cadeia de formato pode consistir nos seguintes caracteres. Os caracteres '', ':', ',', 'T', '-' e '_' são ignorados. Qualquer outro caractere é um erro.

  • h- hora do dia 1-12
  • hh- hora do dia 01-12
  • tt- vinte de quatro horas do dia 00-23
  • m- minuto sem o zero preenchido 0-59
  • mm- minuto com o zero preenchido 00-59
  • s- segundo sem o zero preenchido 0-59
  • ss- segundo com o zero preenchido 00-59
  • fff- milissegundos
  • ffffff- microssegundos
  • fffffffff- nanosegundos
  • aa- AM ou PM
  • AA- AM ou PM

Observe que os segundos fracionários serão analisados mesmo sem um identificador de formato explícito. Você deve especificar apenas segundos fracionários quando desejar afirmar o número de lugares no formato de entrada.

parse_time retornará um erro se não conseguir converter o texto em uma datetime.


@(parse_time(""15:28"", ""tt:mm"")) → 15:28:00.000000
@(parse_time(""2:40 pm"", ""h:mm aa"")) → 14:40:00.000000
@(parse_time(""NOT TIME"", ""tt:mm"")) → ERROR

percent(número): formatosnumbercomo uma porcentagem.


@(percent(0.54234)) → 54%
@(percent(1.2)) → 120%
@(percent(""foo"")) → ERROR

rand(): retorna um único número aleatório entre [0,0-1,0).


@(rand()) → 0.607552015674623913099594574305228888988494873046875@(rand()) → 0.484677570947340263796121462291921488940715789794921875

rand_between(): um único inteiro aleatório no intervalo inclusivo fornecido.


@(rand_between(1, 10)) → 10
@(rand_between(1, 10)) → 2

read_chars(texto): converte textem algo que pode ser lido pelos sistemas de URA. O ReadChars dividirá os números como eles são mais fáceis de entender. Isso inclui a divisão em 3s ou 4s, se apropriado.


@(read_chars(""1234"")) → 1 2 3 4
@(read_chars(""abc"")) → a b c
@(read_chars(""abcdef"")) → a b c , d e f

regex_match(texto, padrão [, grupo]): retorna a primeira correspondência da expressão regularpatternemtext. Um terceiro parâmetro opcional groupdetermina qual grupo correspondente será retornado.


@(regex_match(""sda34dfddg67"", ""\d+"")) → 34
@(regex_match(""Bob Smith"", ""(\w+) (\w+)"", 1)) → Bob
@(regex_match(""Bob Smith"", ""(\w+) (\w+)"", 2)) → Smith
@(regex_match(""Bob Smith"", ""(\w+) (\w+)"", 5)) → ERROR
@(regex_match(""abc"", ""[\."")) → ERROR

remove_first_word(texto): remove a primeira palavra de text.


@(remove_first_word(""foo bar"")) → bar
@(remove_first_word(""Hi there. I'm a flow!"")) → there. I'm a flow!

repeat(texto, contagem): retorna o número textrepetido countde vezes.


@(repeat(""*"", 8)) → ********
@(repeat(""*"", ""foo"")) → ERROR

replace(texto, agulha, substituição [, contagem]): substitui até as countocorrências de needlecom replacementem text. Secountfor omitido ou for menor que 0, todas as ocorrências serão substituídas.


@(replace(""foo bar foo"", ""foo"", ""zap"")) → zap bar zap
@(replace(""foo bar foo"", ""foo"", ""zap"", 1)) → zap bar foo
@(replace(""foo bar"", ""baz"", ""zap"")) → foo bar

replace_time(datetime): retorna um novo datetime com a parte do tempo substituída portime.


@(replace_time(now(), ""10:30"")) → 2018-04-11T10:30:00.000000-05:00@(replace_time(""2017-01-15"", ""10:30"")) → 2017-01-15T10:30:00.000000-05:00@(replace_time(""foo"", ""10:30"")) → ERROR

round(número [, lugares]): arredonda numberpara o valor mais próximo. Opcionalmente, você pode passar o número de casas decimais para arredondar para asplaces. Se places<0, arredondará a parte inteira para os 10^ mais próximos (- lugares).


@(round(12)) → 12
@(round(12.141)) → 12
@(round(12.6)) → 13
@(round(12.141, 2)) → 12.14
@(round(12.146, 2)) → 12.15
@(round(12.146, -1)) → 10
@(round(""notnum"", 2)) → ERROR

round_down(número [, lugares]): arredonda numberpara baixo até o valor inteiro mais próximo. Opcionalmente, você pode passar o número de casas decimais para arredondar para as places.


@(round_down(12)) → 12
@(round_down(12.141)) → 12
@(round_down(12.6)) → 12
@(round_down(12.141, 2)) → 12.14
@(round_down(12.146, 2)) → 12.14
@(round_down(""foo"")) → ERROR

round_up(número [, lugares]): arredonda numberpara o valor inteiro mais próximo. Opcionalmente, você pode passar o número de casas decimais para arredondar para as places.


@(round_up(12)) → 12
@(round_up(12.141)) → 13
@(round_up(12.6)) → 13
@(round_up(12.141, 2)) → 12.15
@(round_up(12.146, 2)) → 12.15
@(round_up(""foo"")) → ERROR

split(texto, [, delimitadores]): divide textem uma matriz de palavras separadas. Valores vazios são removidos da lista retornada. Há um parâmetro final opcional, delimiters que é uma sequência de caracteres usada para dividir o texto em palavras.


@(split(""a b c"")) → [a, b, c]
@(split(""a"", "" "")) → [a]
@(split(""abc..d"", ""."")) → [abc, d]
@(split(""a.b.c."", ""."")) → [a, b, c]
@(split(""a|b,c d"", "" .|,"")) → [a, b, c, d]

text(valor): tenta converter valueem texto. Um erro será retornado se o valor não puder ser convertido.


@(text(3 = 3)) → true
@(json(text(123.45))) → ""123.45""
@(text(1 / 0)) → ERROR

text_compare(texto1, texto2): retorna a ordem do dicionário de text1e text2. O valor retornado será -1 se text1vier antes de text2, 0 se eles forem iguais e 1 se text1vier depois de text2.


@(text_compare(""abc"", ""abc"")) → 0
@(text_compare(""abc"", ""def"")) → -1
@(text_compare(""zzz"", ""aaa"")) → 1

text_length(valor): retorna o comprimento (numero de caracteres) de valuequando convertido em texto.


@(text_length(""abc"")) → 3
@(text_length(array(2, 3))) → 6

text_slice(texto, início [, fim]): retorna a partetextentre start(inclusive) e end(exclusivo). Se endnão for especificado, todo o restante textserá incluído. Valores negativos para startou endcomeçam no final de text.


@(text_slice(""hello"", 2)) → llo
@(text_slice(""hello"", 1, 3)) → el
@(text_slice(""hello😁"", -3, -1)) → lo
@(text_slice(""hello"", 7)) →

time(valor do tempo): tenta converter valuepara um horário. Se for um texto, ele será analisado em um horário usando o formato de horário padrão. Um erro será retornado se o valor não puder ser convertido.


@(time(""10:30"")) → 10:30:00.000000
@(time(""10:30:45 PM"")) → 22:30:45.000000
@(time(datetime(""1979-07-18T10:30:45.123456Z""))) → 10:30:45.123456
@(time(""what?"")) → ERROR

time_from_parts(hora, minuto, segundo): cria um tempo de hour, minutee second.


@(time_from_parts(14, 40, 15)) → 14:40:15.000000
@(time_from_parts(8, 10, 0)) → 08:10:00.000000
@(time_from_parts(25, 0, 0)) → ERROR

title(texto): coloca em maiúscula cada palavra em text


@(title(""foo"")) → Foo
@(title(""ryan lewis"")) → Ryan Lewis
@(title(""RYAN LEWIS"")) → Ryan Lewis
@(title(123)) → 123

today(): retorna a data atual no fuso horário do ambiente.


@(today()) → 2018-04-11

trim(texto, [, caracteres]): remove o espaço em branco de qualquer extremidade de text. Há um parâmetro opcional, charsque é uma sequência de caracteres a serem removidas em vez do espaço em branco.


@(trim("" hello world "")) → hello world
@(trim(""+123157568"", ""+"")) → 123157568

trim_left(``texto, [, caracteres]): remove o espaço em branco desde o início do text. Há um parâmetro opcional, charsque é uma sequência de caracteres a serem removidas em vez do espaço em branco.


@(""*"" & trim_left("" hello world "") & ""*"") → *hello world *@(trim_left(""+12345+"", ""+"")) → 12345+

trim_right(``texto, [, caracteres]): remove o espaço em branco do final de text. Há um parâmetro opcional, charsque é uma sequência de caracteres a serem removidas em vez do espaço em branco.


@(""*"" & trim_right("" hello world "") & ""*"") → * hello world*@(trim_right(""+12345+"", ""+"")) → +12345

tz(``data): retorna o nome do fuso horário de date. Se nenhuma informação de fuso horário estiver presente na data, o fuso horário atual será retornado.


@(tz(""2017-01-15T02:15:18.123456Z"")) → UTC
@(tz(""2017-01-15 02:15:18PM"")) → America/Guayaquil
@(tz(""2017-01-15"")) → America/Guayaquil
@(tz(""foo"")) → ERROR

tz_offset(``data): retorna o deslocamento do fuso horário de date. O deslocamento é retornado no formato [+/-]HH:MM. Se nenhuma informação de fuso horário estiver presente na data, o fuso horário atual será retornado.


@(tz_offset(""2017-01-15T02:15:18.123456Z"")) → +0000
@(tz_offset(""2017-01-15 02:15:18PM"")) → -0500
@(tz_offset(""2017-01-15"")) → -0500
@(tz_offset(""foo"")) → ERROR

upper(texto): converte textem maiúsculas.


@(upper(""Asdf"")) → ASDF
@(upper(123)) → 123

url_encode(texto): codifica text para uso como um parâmetro de URL.


@(url_encode(""two & words"")) → two%20%26%20words
@(url_encode(10)) → 10

url_parts(urn): analisa uma URL em suas diferentes partes.


@(urn_parts(""tel:+593979012345"")) → \{display: , path: +593979012345, scheme: tel\}
@(urn_parts(""twitterid:3263621177#bobby"")) → \{display: bobby, path: 3263621177, scheme: twitterid\}@(urn_parts(""not a urn"")) → ERROR

week_number(data): retorna o número da semana (1-54) de date.


@(week_number(""2019-01-01"")) → 1
@(week_number(""2019-07-23T16:56:59.000000Z"")) → 30
@(week_number(""xx"")) → ERROR

weekday(data): retorna o dia da semana para date. Considera-se que a semana começa no domingo; portanto, um domingo retorna 0, uma segunda-feira retorna 1, etc.


@(weekday(""2017-01-15"")) → 0
@(weekday(""foo"")) → ERROR

word(texto, índice [, delimitadores]): retorna a palavra indexem text. Os índices começam em zero. Há um parâmetro opcional, delimitersque é uma sequência de caracteres usada para dividir o texto em palavras.


@(word(""bee cat dog"", 0)) → bee
@(word(""bee.cat,dog"", 0)) → bee
@(word(""bee.cat,dog"", 1)) → cat
@(word(""bee.cat,dog"", 2)) → dog
@(word(""bee.cat,dog"", -1)) → dog
@(word(""bee.cat,dog"", -2)) → cat
@(word(""bee.*cat,dog"", 1, "".*=|"")) → cat,dog
@(word(""O'Grady O'Flaggerty"", 1, "" "")) → O'Flaggerty

word_count(``texto, [, delimitadores]): retorna o número de palavras em text. Há um parâmetro opcional, delimitersque é uma sequência de caracteres usada para dividir o texto em palavras.


@(word_count(""foo bar"")) → 2
@(word_count(10)) → 1
@(word_count("""")) → 0
@(word_count(""😀😃😄😁"")) → 4
@(word_count(""bee.*cat,dog"", "".*=|"")) → 2
@(word_count(""O'Grady O'Flaggerty"", "" "")) → 2

word_slice(``texto, início, fim [, delimitadores]): extrai uma sub-sequência de palavras de text. As palavras retornadas são aquelas que até incluem start, mas não incluem end . Os índices começam em zero e um valor final negativo significa que todas as palavras após o início devem ser retornadas. Há um parâmetro opcional, delimitersque é uma sequência de caracteres usada para dividir o texto em palavras.


@(word_slice(""bee cat dog"", 0, 1)) → bee
@(word_slice(""bee cat dog"", 0, 2)) → bee cat
@(word_slice(""bee cat dog"", 1, -1)) → cat dog
@(word_slice(""bee cat dog"", 1)) → cat dog
@(word_slice(""bee cat dog"", 2, 3)) → dog
@(word_slice(""bee cat dog"", 3, 10)) →
@(word_slice(""bee.*cat,dog"", 1, -1, "".*=|,"")) → cat dog
@(word_slice(""O'Grady O'Flaggerty"", 1, 2, "" "")) → O'Flaggerty

Contribuidores
1
Photo of the contributor
+ 1 contributors
Isso foi útil?
Sim
Não
Sugerir edições (GitHub)
Introdução a expressões e variáveis
« Anterior
Editor de fluxo e suas ferramentas
Próximo »
Contribuidores
1
Photo of the contributor
+ 1 contributors
Nesta página
Ainda tem dúvidas?
Pergunte à comunidade
Encontre soluções e compartilhe ideias na VTEX Community
Junte-se à nossa comunidade
Solicite suporte à VTEX
Receba assistência personalizada com nossos especialistas
Abra um ticket de suporte
GitHubDeveloper PortalComunidadeFeedback