Condizioni in Shopify Flow

In Shopify Flow, le condizioni vengono utilizzate per determinare quale percorso seguire in un flusso di lavoro, in genere per controllare se viene eseguita un'azione. Quando si imposta una condizione, si sceglie un campo dati da verificare (ad esempio il titolo del prodotto), un operatore logico (ad esempio equal to) e un valore di confronto (Blue jeans).

Condizioni di esempio

Controllo della corrispondenza di almeno un articolo di un elenco a una condizione

Questo esempio mostra una condizione tipica che controlla se almeno un articolo di un elenco corrisponde a un determinato valore.

In questo caso, la condizione verifica se uno dei prodotti di un ordine ha un tag presale. Per creare questa condizione, dovresti scegliere order / lineItems / product / tags. Per impostazione predefinita, Flow sceglie at least one of come operatore logico:

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

Le parti at least one of sono operatori di elenco e vengono utilizzati per gestire le corrispondenze tra gli articoli dell'elenco. La parte is equal to è un operatore a livello di campo che determina se una singola voce dell'elenco corrisponde.

Controllo che nessuno degli articoli di un elenco corrisponda a una condizione

Questo esempio mostra una condizione tipica che controlla se nessuno degli articoli di un elenco corrisponde a un certo valore. Un problema comune da considerare è che gli elenchi possono essere vuoti. Quando un elenco è vuoto, la condizione verrà gestita dall'operatore di elenco (in questo caso none of).

In questo caso, la condizione controlla se nessuno dei tag di prodotto è uguale a foo:

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

La condizione restituirà true se (1) non ci sono tag di prodotto o (2) nessuno dei tag è foo. In caso contrario, verrà restituito false.

Controllo della corrispondenza di un articolo di un elenco a più criteri

Questo esempio mostra una condizione tipica che controlla se almeno un articolo di un elenco corrisponde a due criteri separati.

In questo caso, la condizione verifica se uno dei prodotti di un ordine ha un tag presale e se ha clothing come productType.

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

Per creare questa condizione:

  1. Scegli order/lineItems/product/tags per il primo criterio.
  2. Scegli di aggiungere criteri per lo stesso articolo nell'elenco lineItems. Nota: scegliere l'articolo sbagliato dell'elenco in questo passaggio è un errore comune.
  3. Scegli lineItems_item come oggetto di primo livello e product/productType per il secondo criterio. Nota: anche scegliere l'oggetto sbagliato in questo passaggio è un errore comune.
  4. Scegli AND per combinare i due criteri.
  5. Inserisci i valori presale e clothing per i due criteri.

Tipi di dati utilizzati con Flow

Il primo valore in ogni condizione di Flow è costituito da un dato recuperato dal negozio ed estratto dell'Admin API di GraphQL.

Flow supporta i tipi di dati seguenti:

  • A virgola mobile: i valori a virgola mobile sono numeri con una quantità decimale. Ad esempio, 4,25.
  • Numero intero: i valori a numero intero sono numeri interi privi di una quantità decimale. Ad esempio, 42.
  • Data: i valori di data sono la rappresentazione numerica della data. Ad esempio, 01012021.
  • Stringa: i valori stringa sono testi. I confronti che utilizzano valori stringa non tengono conto della differenza tra maiuscole e minuscole.
  • Booleano: i valori booleani sono true o false.
  • Enum: i valori enum sono set di dati che consentono a una variabile di essere un insieme di costanti predefinite.

Operatori logici

Gli operatori logici definiscono la modalità con cui viene applicata la condizione. Le condizioni possono verificare proprietà semplici, ad esempio se il totale di un ordine è superiore a un certo importo o se un cliente accetta comunicazioni di marketing. Gli operatori logici possono anche verificare proprietà più complesse.

Gli operatori possono essere operatori a livello di campo, ad esempio equal to o not equal to, oppure operatori di elenco, esempio at least one of o none of.

Operatori a livello di campo

Gli operatori a livello di campo vengono utilizzati per confrontare due valori. Flow può utilizzare gli operatori seguenti:

Equal to

L'operatore Equal to confronta i valori per verificare se sono uguali. Nell'esempio seguente il valore order.currentTotalDiscountsSet.shopMoney.amount viene recuperato dai dati del negozio e confrontato con il secondo valore, 50.

Esempio di un flusso di lavoro che utilizza l'operatore logico equal to per annullare un ordine se il dato recuperato è uguale a 50

Se il primo valore è uguale a 50, la condizione è true. L'ordine viene annullato.

Not equal to

L'operatore Not equal to confronta i valori per verificare che non corrispondano. Nell'esempio seguente il valore order.currentTotalDiscountsSet.shopMoney.amount viene recuperato dai dati del negozio e confrontato con il secondo valore, 50.

Esempio di un flusso di lavoro che utilizza l'operatore logico not equal to per annullare un ordine se il dato recuperato non è uguale a 50

Se il primo valore è uguale a 93, la condizione è true. L'ordine viene annullato.

Greater than e Greater than or equal to

Gli operatori Greater than e Greater than or equal to confrontano i valori per verificare se il primo è maggiore o maggiore o uguale rispetto al secondo. Nell'esempio seguente il valore order.currentTotalDiscountsSet.shopMoney.amount viene recuperato dai dati del negozio e confrontato con il secondo valore, 50.

Esempio di un flusso di lavoro che utilizza l'operatore logico greater than per annullare un ordine se il dato recuperato è maggiore di 50

Se il valore recuperato dal negozio è 137, la condizione è true, perché 137 è maggiore di 50. L'ordine viene annullato.

Less than e Less than or equal to

Gli operatori Less than e Less than or equal to confrontano i valori per verificare se il primo è minore o minore o uguale rispetto al secondo. Nell'esempio seguente il valore order.currentTotalDiscountsSet.shopMoney.amount viene recuperato dai dati del negozio e confrontato con il secondo valore, 50.

Esempio di un flusso di lavoro che utilizza l'operatore logico less than or equal to per annullare un ordine se il dato recuperato è minore o uguale a 50

Se il valore recuperato dal negozio è 47, la condizione è true, perché 47 è minore o uguale a 50. L'ordine viene annullato.

At least one of

L'operatore at least one of verifica se il campo è uguale a un qualsiasi valore nell'elenco fornito. I valori da verificare devono essere inseriti singolarmente, dopodiché deve essere premuto il tasto Invio (una procedura simile ai tag). Utilizzando l'operatore at least one of con una matrice vuota si ottiene una valutazione falsa. Nell'esempio seguente il valore order.lineitem.product.title viene recuperato dai dati del negozio e confrontato con il secondo set di valori: pineapple, guava, kiwi (ananas, guava, kiwi).

Esempio di un flusso di lavoro che utilizza l'operatore logico At least one of per annullare un ordine se il dato recuperato include pineapple, guava, o kiwi (ananas, guava o kiwi)

Se il valore recuperato dal negozio è guava, la condizione è true, perché guava è incluso nella matrice pineapple, guava, kiwi (ananas, guava, kiwi). L'ordine viene annullato.

Not any of

L'operatore not any of verifica se il campo non è uguale a nessuno dei valori nell'elenco fornito. I valori da verificare devono essere inseriti singolarmente, dopodiché deve essere premuto il tasto Invio (una procedura simile ai tag). Nell'esempio seguente il valore order.lineitem.product.title viene recuperato dai dati del negozio e confrontato con il secondo set di valori: pineapple, guava, kiwi (ananas, guava, kiwi).

Esempio di un flusso di lavoro che utilizza l'operatore logico not any of per annullare un ordine se il dato recuperato non include pineapple, guava, o kiwi (ananas, guava o kiwi)

Se il valore recuperato dal negozio è raspberry (lampone), la condizione è true, perché raspberry non è incluso nella matrice pineapple, guava, kiwi (ananas, guava, kiwi). L'ordine viene annullato.

Includes

L'operatore Includes confronta i valori per verificare se l'input del primo comprende i dati dell'input del secondo. Nell'esempio seguente il valore order.lineitem.product.title viene recuperato dai dati del negozio e paragonato al secondo valore, scrape (raschiatura).

Esempio di un flusso di lavoro che utilizza l'operatore logico includes per annullare un ordine se il dato recuperato include la stringa scrape (raschiatura)

Se il valore recuperato dai dati del negozio è skyscraper (grattacielo), la condizione è true, perché la stringa esatta scrape (raschiatura) è inclusa nella stringa skyscraper (grattacielo). L'ordine viene annullato.

Does not include

L'operatore Does not include confronta i valori per verificare se l'input del primo valore non comprende i dati dell'input del secondo. Nell'esempio seguente il valore order.lineitem.product.title viene recuperato dai dati del negozio e paragonato al secondo valore, scrape (raschiatura).

Esempio di un flusso di lavoro che utilizza l'operatore logico does not include per annullare un ordine se il dato recuperato non include la stringa scrape (raschiatura)

Se il valore recuperato dai dati del negozio è scrap-metal (rottami metallici), la condizione è true, perché la stringa esatta scrape (raschiatura) non è inclusa nella stringa scrap-metal. L'ordine viene annullato.

Starts with

L'operatore Starts with paragona i valori per verificare se il primo inizia con i dati del secondo. Nell'esempio seguente il valore order.shippingAddress.country viene recuperato dai dati del negozio e paragonato al secondo valore, United (Unito).

Esempio di un flusso di lavoro che utilizza l'operatore logico starts with per annullare un ordine se il dato recuperato inizia con la stringa United (Unito)

Se il valore recuperato dal negozio è United Kingdom (Regno Unito), la condizione è true, perché la stringa United Kingdom (Regno Unito) inizia con la stringa United (Unito). L'ordine viene annullato.

Does not start with

L'operatore Does not start with paragona i valori per verificare se il primo non inizia con i dati del secondo. Nell'esempio seguente il valore order.shippingAddress.country viene recuperato dai dati del negozio e paragonato al secondo valore, United (Unito).

Esempio di un flusso di lavoro che utilizza l'operatore logico does not start with per annullare un ordine se il dato recuperato non inizia con la stringa United (Unito)

Se il valore recuperato dal negozio è Canada, la condizione è true, perché la stringa United Kingdom (Regno Unito) non inizia con la stringa Canada. L'ordine viene annullato.

Ends with

L'operatore Ends with paragona i valori per verificare se il primo termina con i dati del secondo. Nell'esempio seguente il valore order.lineitems.product.title viene recuperato dai dati del negozio e paragonato al secondo valore, last-available (ultimo-disponibile).

Esempio di un flusso di lavoro che utilizza l'operatore logico ends with per annullare un ordine se il dato recuperato termina con la stringa last-available (ultimo-disponibile)

Se il valore recuperato dal negozio è athletic socks last-available (calzini sportivi ultimo-disponibile), la condizione è true, perché la stringa athletic socks last-available termina con la stringa last-available (ultimo-disponibile). L'ordine viene annullato.

Does not end with

L'operatore Does not end with paragona i valori per verificare se il primo non termina con i dati del secondo. Nell'esempio seguente il valore order.lineitems.product.title viene recuperato dai dati del negozio e paragonato al secondo valore, last-available (ultimo-disponibile).

Esempio di un flusso di lavoro che utilizza l'operatore logico does not end with per annullare un ordine se il dato recuperato non termina con la stringa last-available (ultimo-disponibile)

Se il valore recuperato dal negozio è athletic socks new (calzini sportivi nuovo), la condizione è true, perché la stringa athletic socks new non termina con la stringa last-available (ultimo-disponibile). L'ordine viene annullato.

Operatori Null o Empty

Empty or does not exist

Alcuni campi nei dati possono essere vuoti. Ad esempio, order.cancelReason restituirà null se un ordine non viene annullato. Utilizza empty or does not exist se desideri restituire true quando un campo è vuoto o null e false se è presente.

Not empty and exists

Alcuni campi nei tuoi dati possono essere vuoti. Ad esempio, order.cancelReason restituirà null se un ordine non viene annullato. Utilizza not empty and exists se desideri restituire true quando un campo non è vuoto e false quando è vuoto.

Operatori di elenco

Gli operatori di elenco vengono combinati con gli operatori a livello di campo per consentire di verificare le condizioni dei dati inclusi negli elenchi.

Come nell'esempio "at least one", potresti voler verificare se un ordine contiene un prodotto specifico (situato in order.lineItems) con un tag specifico (un elenco in order.lineItems.product.tags). In entrambi i casi, l'esempio utilizza l'operatore di elenco at least one of.

Flow fornisce tre operatori per l'utilizzo degli elenchi: at least one of, none of e all of.

At least one of

La maggior parte delle condizioni con gli elenchi vorrà utilizzare at least one of. Questo operatore restituirà true se uno qualsiasi degli articoli nell'elenco corrisponde alla condizione. Ad esempio, se vuoi verificare se un ordine contiene un prodotto con un tag specifico, utilizza at least one of. Quando l'elenco è vuoto o quando la condizione non è soddisfatta, la condizione restituirà false.

None of

In alcuni casi, può essere utile verificare se un elenco non contiene un articolo. Il modo migliore per creare questa condizione è modificare l'operatore di elenco in none of. Questo operatore restituirà true se nessuno degli articoli nell'elenco corrisponde alla condizione. E soprattutto se l'elenco è vuoto, restituisce anche true. Ad esempio, se vuoi verificare se un prodotto non contiene il tag presale, utilizza None of product tags is equal to presale.

All of

In alcuni casi, può essere utile verificare se tutti gli articoli di un elenco corrispondono a una condizione. Ad esempio, potresti voler verificare se tutti gli articoli di un ordine hanno uno specifico fornitore del prodotto chiamato Acme. A tale scopo, utilizzerai All of order line items have a product.vendor equal to Acme.

Ordinamento delle condizioni

Puoi creare flussi di lavoro con più condizioni, ognuna delle quali può comportare diverse azioni. L'ordine delle condizioni è importante. Il controllo delle condizioni comincia all'inizio del flusso di lavoro e prosegue sistematicamente per ciascuna di esse. Il controllo si interrompe quando una condizione risulta soddisfatta.

Combinazione di più criteri in una condizione

Quando si crea una condizione, è possibile impostare diversi criteri. Puoi scegliere come combinare questi criteri separati.

If all conditions are met (Se tutte le condizioni sono soddisfatte)

Selezionando l'opzione Se tutte le condizioni sono soddisfatte si ottiene una risposta true solo se tutti i criteri impostati risultano true. Ciò equivale a un'istruzioneAND nel campo della programmazione.

Ad esempio, puoi creare un flusso di lavoro per taggare i clienti che si trovano in Canada e che spendono più di 500 USD per un singolo ordine.

Esempio di un flusso di lavoro che utilizza la condizione and

Il flusso di lavoro aggiunge un tag al cliente solo se quest'ultimo si trova in Canada e spende più di 500 USD per l'ordine. Se una di queste condizioni è false, il cliente non verrà contrassegnato con un tag.

If any conditions are met (Se almeno una condizione è soddisfatta)

Selezionando l'opzione Se almeno una condizione è soddisfatta si ottiene una risposta true se risulta true uno solo dei criteri impostati. Ciò equivale a una frase con OR in programmazione.

Ad esempio, puoi creare un flusso di lavoro per aggiungere tag agli ordini considerati ad alto o medio rischio.

Esempio di un flusso di lavoro che utilizza la condizione or

Il flusso di lavoro aggiunge un tag all'ordine se quest'ultimo è ad alto o medio rischio. L'ordine verrà contrassegnato con un tag, purché una di queste condizioni sia true.

Combinazione di condizioni e azioni

Puoi combinare le condizioni per crearne una più complessa. Quando si combinano le condizioni, perché l'intera condizione sia true è necessario che tutte le condizioni siano true. In caso contrario, l'intera condizione è false. Nell'esempio seguente il cliente deve accettare l'invio di materiali di marketing e il prezzo totale dell'ordine deve raggiungere una determinata soglia.

Esempio di un flusso di lavoro che verifica l'importo totale della spesa di un cliente e aggiunge tag

Allo stesso modo, puoi combinare le azioni in modo da poterne eseguire un numero maggiore. Questo esempio utilizza più condizioni per verificare l'idoneità di un cliente a un programma fedeltà basato sull'importo totale speso nel negozio. Nell'esempio sopra, le seguenti condizioni vengono verificate nell'ordine in cui vengono visualizzate:

  1. Se l'importo totale è superiore a 1000 EUR e il cliente ha accettato di ricevere comunicazioni di marketing, contrassegnalo con il tag Gold (oro).
  2. Se l'importo totale è inferiore a 1000 EUR ma superiore a 500 EUR e il cliente ha accettato di ricevere comunicazioni di marketing, contrassegnalo con il tag Silver (argento).
  3. Se il cliente ha speso più di 200 EUR e ha accettato di ricevere comunicazioni di marketing, contrassegnalo con il tag Bronze (bronzo).

Dati statici e dinamici nelle condizioni

In genere, il secondo valore di una condizione è un valore statico inserito manualmente (come product.title == "your title"). Questo valore rimane invariato a ogni esecuzione del flusso di lavoro.

Se il campo per il secondo valore mostra un simbolo </>, puoi anche utilizzare i valori dinamici. Questi ultimi vengono ricavati dai dati del negozio ad ogni esecuzione del flusso di lavoro. Per utilizzare un valore dinamico, clicca sul simbolo </> e seleziona il valore di confronto. I valori dinamici non sono disponibili per tutti i campi.

Ad esempio, puoi creare un flusso di lavoro che aggiunge un tag a un ordine se il paese indicato nell'indirizzo di fatturazione corrisponde a quello indicato nell'indirizzo di spedizione.

Esempio di un flusso di lavoro che aggiunge un tag a un ordine utilizzando i dati RHS per verificare che il paese di fatturazione e di spedizione di un cliente corrispondano.

In questo esempio, sia il primo che il secondo valore vengono ricavati dai dati del negozio: non viene specificata manualmente una stringa statica di controllo per il secondo valore. Se il paese nell'indirizzo di fatturazione fornito dal cliente corrisponde a quello indicato nell'indirizzo di spedizione, la condizione è true e l'ordine viene contrassegnato con un tag.

A volte potrebbe essere necessario utilizzare dati dinamici di tipo errato. Ad esempio, potrebbe essere necessario confrontare un numero memorizzato come una stringa con un altro numero. In questo caso, puoi utilizzare l'opzione Esegui codice per convertire i dati nel tipo corretto.

Sei pronto per iniziare a vendere con Shopify?

Provalo, è gratis