Condições no Shopify Flow

No Shopify Flow, as condições são usadas para determinar qual caminho seguir em um fluxo de trabalho, em geral para controlar se uma ação é realizada. Ao definir uma condição, você escolhe um campo de dados para verificar (como o título do produto), um operador lógico (como equal to) e um valor para comparar (por exemplo, Blue jeans).

Exemplos de condições

Verificar se pelo menos um item na lista atende a uma condição

Este exemplo mostra uma condição comum que verifica se pelo menos um item da lista coincide com um determinado valor.

Nesse caso, a condição confere se pelo menos um dos produtos no pedido tem a tag presale. Para criar essa condição, você precisa selecionar order / lineItems / product / tags. Por padrão, o Flow escolhe pelo menos um como operador lógico:

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale

As partes pelo menos um são operadores de lista e servem para verificar a correspondência em vários itens de uma lista. A parte é igual a é um operador de campo que determina se um único item da lista é igual ao valor especificado.

Verificar se nenhum item na lista atende a uma condição

Este exemplo mostra uma condição comum que verifica se nenhum item em uma lista coincide com um determinado valor. Um problema frequente a se considerar é que listas podem estar vazias. Nesse caso, a condição será tratada pelo operador de lista (ou seja, nenhum).

Então, a condição verifica se nenhuma das tags do produto é igual a "foo":

If none of product / tags:
  tag_item
  is equal to
  foo

A condição retornará true se (1) não houver nenhuma tag de produto ou (2) nenhuma das tags for igual a "foo". Caso contrário, a condição será false.

Verificar se um item na lista coincide com vários critérios

Este exemplo mostra uma condição comum que verifica se pelo menos um item na lista atende a dois critérios diferentes.

Nesse caso, a condição verifica se um dos produtos no pedido tem a tag presale e o productType clothing.

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale
  AND
  If lineItem_item / product
    productType
    is equal to
    clothing

Para criar essa condição, faça o seguinte:

  1. Escolha order/lineItems/product/tags para o primeiro critério.
  2. Escolha Adicionar critério ao mesmo item na lista lineItems. Atenção: selecionar o item de lista errado é um erro comum nessa etapa.
  3. Escolha lineItems_item como objeto de nível superior e product/productType` como segundo critério. Atenção: selecionar o objeto errado aqui também é um erro comum.
  4. Escolha AND para combinar os dois critérios.
  5. Insira os valores presale e clothing nos dois critérios.

Tipos de dados usados com o Flow

O primeiro valor em uma condição do Flow vem de dados da loja e é retirado da API Admin GraphQL.

O Flow é compatível com estes tipos de dados:

  • Flutuantes: valores com uma parte decimal. Por exemplo, 4,25.
  • Inteiros: valores em números inteiros que não têm uma parte decimal. Por exemplo, 42.
  • Datas: valores que representam numericamente uma data. Por exemplo, 01012021.
  • Strings: valores compostos por texto. As comparações que usam valores de string não diferenciam entre letras maiúsculas e minúsculas.
  • Booleanos: valores definidos como "true" (verdadeiro) ou "false" (falso).
  • Enumerações: conjuntos de dados que permitem que uma variável seja um conjunto de constantes predefinidas.

Operadores lógicos

Os operadores lógicos definem como a condição é aplicada. As condições verificam propriedades simples, como se o total de um pedido está acima de um determinado valor ou se o cliente aceita marketing. É importante lembrar que os operadores lógicos também podem verificar propriedades mais complexas.

Operadores podem ser no nível de campo, como igual a ou não é igual a, ou de lista, como pelo menos um ou nenhum.

Operadores de campo

Operadores de campo são usados para comparar dois valores, e o Flow permite usar os seguintes:

É igual a

É igual a compara valores para determinar se são iguais. No exemplo abaixo, o valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado com o segundo valor, 50.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o primeiro valor for igual a 50, a condição será verdadeira e o pedido será cancelado.

Não é igual a

Não é igual a compara valores para verificar se são iguais ou não. No exemplo abaixo, o valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado com o segundo valor, 50.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o primeiro valor for igual a 93, a condição será verdadeira e o pedido será cancelado.

Maior que e Maior ou igual a

Maior que e Maior ou igual a comparam valores para verificar se o primeiro é maior ou maior ou igual ao segundo. No exemplo abaixo, o valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado com o segundo valor, 50.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for 137, a condição será verdadeira, pois 137 é maior que 50, e o pedido será cancelado.

Menor que e Menor ou igual a

Menor que e Menor ou igual a comparam valores para verificar se o primeiro é menor ou menor ou igual ao segundo. No exemplo abaixo, o valor de order.currentTotalDiscountsSet.shopMoney.amount é recuperado dos dados da loja e comparado com o segundo valor, 50.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for 47, a condição será verdadeira, pois 47 é menor ou igual a 50, e o pedido será cancelado.

Pelo menos um de

O operador pelo menos um de verifica se o campo é igual a algum valor na lista fornecida. Os valores a serem verificados precisam ser inseridos um de cada vez, seguidos pela tecla Enter (similar às tags). É importante destacar que o uso desse operador em uma matriz em branco resulta em uma avaliação falsa. No exemplo abaixo, o valor de order.lineitem.product.title é recuperado dos dados da loja e comparado com o segundo conjunto de valores (pineapple, guava, kiwi).

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for "guava", a condição será verdadeira, pois ele está incluído na matriz "pineapple, guava, kiwi", e o pedido será cancelado.

Nenhum de

O operador nenhum de verifica se o campo não é igual a algum valor na lista fornecida. Os valores a serem verificados precisam ser inseridos um de cada vez, seguidos pela tecla Enter (similar às tags). No exemplo abaixo, o valor de order.lineitem.product.title é recuperado dos dados da loja e comparado com o segundo conjunto de valores (pineapple, guava, kiwi).

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for "raspberry", a condição será verdadeira, pois ele não está incluído na matriz "pineapple, guava, kiwi", e o pedido será cancelado.

Inclui

Inclui compara valores para verificar se o primeiro valor inclui os dados do segundo. No exemplo abaixo, o valor de order.lineitem.product.title é recuperado dos dados da loja e comparado com o segundo valor, scrape.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor recebido dos dados da loja for "skyscraper", a condição será verdadeira, pois a string exata "scrap" está incluída na string "skyscraper", e o pedido será cancelado.

Não inclui

Não inclui compara valores para verificar se o primeiro valor não inclui os dados do segundo. No exemplo abaixo, o valor de order.lineitem.product.title é recuperado dos dados da loja e comparado com o segundo valor, scrape.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado dos dados da loja for "scrap-metal", a condição será verdadeira, já que a string exata "scrape" não está incluída na string "scrap-metal", e o pedido será cancelado.

Começa com

Começa com compara valores para verificar se o primeiro valor inicia com os dados incluídos no segundo. No exemplo abaixo, o valor de order.shippingAddress.country é recuperado dos dados da loja e comparado com o segundo valor, United.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado dos dados da loja for "United Kingdom", a condição será verdadeira, pois a string "United" inicia a string "United Kingdom", e o pedido será cancelado.

Não começa com

Não começa com compara valores para verificar se o primeiro valor não inicia com os dados incluídos no segundo. No exemplo abaixo, o valor de order.shippingAddress.country é recuperado dos dados da loja e comparado com o segundo valor, United.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for "Canada", a condição será verdadeira, pois essa string não inicia a string "United Kingdom", e o pedido será cancelado.

Termina com

Termina com compara valores para verificar se o primeiro valor termina com os dados incluídos no segundo. No exemplo abaixo, o valor de order.lineitems.product.title é recuperado dos dados da loja e comparado com o segundo valor, last-available.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for "athletic socks last-available", a condição será verdadeira, pois essa string termina com "last-available", e o pedido será cancelado.

Não termina com

Não termina com compara valores para verificar se o primeiro valor não termina com os dados do segundo. No exemplo abaixo, o valor de order.lineitems.product.title é recuperado dos dados da loja e comparado com o segundo valor, last-available.

Exemplo de fluxo de trabalho que usa o operador lógico

Se o valor retirado da loja for "athletic socks new", a condição será verdadeira, uma vez que a string não termina com "last-available". Logo, o pedido será cancelado.

Operadores nulos ou vazios

Vazio ou não existe

Alguns campos de dados podem estar vazios. Por exemplo, order.cancelReason retornará null se o pedido não for cancelado. Use vazio ou não existe se quiser que a condição retorne true quando um campo estiver vazio ou null e false se estiver preenchido.

Não está vazio e existe

Alguns campos de dados podem estar vazios. Por exemplo, order.cancelReason retornará null se o pedido não for cancelado. Use não está vazio e existe se quiser retornar true quando um campo não estiver vazio e false quando estiver vazio.

Operadores de lista

Operadores de lista são combinados com operadores de campo para permitir que você verifique condições em dados incluídos em listas.

Assim como no exemplo de "pelo menos um", talvez você queira verificar se um pedido contém um determinado produto (localizado em order.lineItems) com uma tag específica (uma lista em order.lineItems.product.tags). Nos dois casos, o exemplo usa o operador de lista pelo menos um.

O Flow oferece três operadores para trabalhar com listas: Pelo menos um de, Nenhum de e Todos.

Pelo menos um de

A maioria das condições com listas vai usar o operador Pelo menos um de. Esse operador retornará true se algum item na lista atender à condição. Por exemplo, se você quiser verificar se um pedido contém um produto com uma tag específica, use Pelo menos um de. Quando a lista está vazia ou a condição não é atendida, o resultado será false.

Nenhum de

Em alguns casos, talvez você queira verificar se a lista não contém um item específico. A melhor maneira de criar essa condição é alterar o operador de lista para Nenhum. Esse operador retornará true se nenhum item na lista atender à condição. É importante ressaltar que, se a lista estiver vazia, a resposta também será true. Por exemplo, se você quer verificar se um produto não contém a tag presale, use None of product tags is equal to presale.

Todos

Em casos específicos, talvez você queira verificar se todos os itens em uma lista atendem a uma condição. Por exemplo, imagine que você quer conferir se todos os produtos em um pedido têm um determinado fabricante, chamado Acme. Para isso, use All of order line items have a product.vendor equal to Acme.

Ordenar condições

É possível criar fluxos de trabalho que tenham várias condições, cada uma podendo resultar em ações diferentes. Vale lembrar que a ordem das condições é importante, pois a verificação delas começa no início do fluxo de trabalho e avança sistematicamente por cada uma. Quando uma condição é atendida, a verificação é interrompida.

Combinar vários critérios em uma condição

Ao criar uma condição, é possível definir vários critérios. Você escolhe como cada um precisa ser combinado.

If all conditions are met ("Se todas as condições forem atendidas")

Se o operador If all conditions are met ("Se todas as condições forem atendidas") for selecionado, a resposta será verdadeira apenas se todos os critérios definidos forem verdadeiros. É como uma instrução AND na programação.

Por exemplo, digamos que você crie um fluxo de trabalho para marcar com tags os clientes que estão localizados no Canadá e gastam mais de US$ 500 em um único pedido.

Exemplo de um fluxo de trabalho que usa a condição

O fluxo de trabalho marca com tags apenas os clientes que estiverem no Canadá e gastarem mais de US$ 500 no pedido. Se alguma dessas condições for falsa, o consumidor não será marcado.

If any conditions are met ("Se alguma condição for atendida")

A seleção da opção If any conditions are met ("Se alguma condição for atendida") resulta em uma resposta verdadeira se algum dos critérios definidos for verdadeiro. É como uma instrução OR na programação.

Por exemplo, digamos que você crie um fluxo de trabalho para marcar com tag os pedidos considerados de risco alto ou médio.

Exemplo de um fluxo de trabalho que usa a condição

O fluxo de trabalho o marca o pedido com tags se a condição de risco alto ou médio for verdadeira.

Combinar condições e ações

É possível combinar condições para criar uma condição mais complexa, porém ela só será verdadeira se todas as condições que a compõem forem atendidas. Caso contrário, a condição inteira será falsa. No exemplo abaixo, o cliente precisa aceitar materiais de marketing e o preço total do pedido precisa atender a um determinado limite.

Exemplo de um fluxo de trabalho que verifica o valor total de gasto de um cliente e adiciona tags

Também é possível combinar ações para que várias sejam realizadas. O exemplo abaixo usa diversas condições para verificar se um cliente se qualifica para um programa de fidelidade conforme o valor total gasto na loja. No exemplo acima, as seguintes condições são verificadas na ordem em que aparecem:

  1. Se a soma dos preços for maior que US$ 1 mil e o cliente concordou em receber marketing, marque-o com a tag Gold;
  2. Se a soma dos preços for menor que US$ 1 mil e maior que US$ 500 e o cliente concordou em receber marketing, marque-o com a tag Silver;
  3. Se o cliente gastou mais de US$200 e o cliente concordou em receber marketing, marque-o com a tag Bronze.

Dados estáticos e dinâmicos em condições

Em geral, o segundo valor de uma condição é estático e inserido manualmente, como product.title == "your title", e permanece o mesmo em todas as execuções do fluxo de trabalho.

No entanto, também é possível usar valores dinâmicos se o campo do segundo valor exibir o símbolo </>. Esses valores são retirados dos dados da loja sempre que o fluxo de trabalho for executado. Para usar um valor dinâmico, clique no símbolo </> e selecione o valor que servirá de base para a verificação. Vale lembrar que os valores dinâmicos não estão disponíveis para todos os campos.

Por exemplo, digamos que você crie um fluxo de trabalho que marca com tags um pedido se o país que consta no endereço de faturamento é igual ao país do endereço de entrega.

Exemplo de um fluxo de trabalho que marca com tags um pedido e usa dados RHS para verificar se o país de faturamento e o país de frete de um cliente são iguais.

Neste exemplo, o primeiro e o segundo valores são retirados dos dados da loja, ao invés de uma string estática ser especificada manualmente para verificar o segundo valor. Se o país do endereço de faturamento informado pelo cliente for igual ao país do endereço de entrega, a condição será verdadeira e o pedido será marcado com tags.

Às vezes, pode ser necessário usar dados dinâmicos do tipo errado. Por exemplo, talvez você precise comparar um número armazenado como texto com outro. Nesse caso, use a opção Executar código para converter os dados ao tipo correto.

Não encontrou as respostas que está procurando? Estamos sempre à disposição para ajudar você.