Villkor i Shopify Flow
I Shopify Flow används villkor för att bestämma vilken väg som ska följas i ett arbetsflöde, vanligtvis för att kontrollera om en åtgärd utförs. När du ställer in ett villkor väljer du ett datafält som ska kontrolleras (till exempel ett produktnamn), en logisk operator (till exempel equal to
) och ett värde att kontrollera mot (Blue jeans
).
På den här sidan
Exempelvillkor
Kontrollera om minst en artikel i en lista matchar ett villkor
Det här exemplet visar ett vanligt villkor som kontrollerar om minst en artikel i en lista matchar ett visst värde.
I det här fallet kontrollerar villkoret om en av produkterna i en order har taggen presale
. För att skapa detta villkor väljer du order / lineItems / product / tags
. Som standard väljer Flow minst en av som logisk operator:
Delarna minst en av är listoperatorer och används för att hantera matchning över flera listartiklar. Delen är lika med är en fältnivåoperator som avgör om en enskild listartikel matchar.
Kontrollera om ingen av artiklarna i en lista matchar ett villkor
Det här exemplet visar ett vanligt villkor som kontrollerar om ingen av artiklarna i en lista matchar ett visst värde. Ett vanligt problem att tänka på är att listor kan vara tomma. När en lista är tom hanteras villkoret av listoperatorn (i det här fallet ingen av).
I det här fallet kontrollerar villkoret om ingen av produkttaggarna är lika med foo:
Villkoret returnerar true
om (1) det inte finns några produkttaggar eller (2) ingen av taggarna är foo. Annars returneras false
.
Kontrollera om en artikel i en lista matchar flera villkor
Det här exemplet visar ett vanligt villkor som kontrollerar om minst en artikel i en lista matchar två separata kriterier.
I det här fallet kontrollerar villkoret om en av produkterna i en order har taggats med presale
och om dess productType är clothing
.
För att skapa detta villkor ska du:
- Välja order/lineItems/product/tags för det första kriteriet.
- Välja att lägga till kriterier för samma objekt på listan lineItems. Obs! Att välja fel listartikel här är ett vanligt misstag.
- Välja lineItems_item som toppnivåartikel och sedan product/productType för det andra kriteriet. Obs! Att välja fel artikel här är också ett vanligt misstag.
- Välja OCH för att kombinera de två kriterierna.
- Ange värdena
presale
ochclothing
för de två kriterierna.
Datatyper som används med Flow
Det första värdet i ett Flow-villkor är data som hämtats från din butik och bygger på GraphQL Admin API.
Flow stöder följande typer av data:
- Flyttal: Flyttalsvärden är nummer med ett decimaltal. Till exempel 4,25.
- Heltal: Heltalsvärden är heltal som inte har ett decimaltal. Till exempel 42.
- Datum: Datumvärden är en numerisk representation av datumet. Till exempel 01012021.
- Sträng: Strängvärden är text. Jämförelser med strängvärden är inte skiftlägeskänsliga.
- Boolean: Boolean-värden är antingen sanna eller falska.
- Enum: Enum-värden är datauppsättningar som gör det möjligt för en variabel att vara en uppsättning fördefinierade konstanter.
Logiska operatorer
Logiska operatorer definierar hur ditt villkor tillämpas. Villkor kan kontrollera enkla egenskaper, till exempel om en orders totalsumma är över ett visst belopp eller om en kund godkänner marknadsföring. Logiska operatorer kan också kontrollera mer komplexa egenskaper.
Operatorer kan vara antingen fältnivåoperatorer som lika med eller inte lika med, eller listoperatorer som minst en av eller ingen av.
Fältnivåoperatorer
Fältnivåoperatorer används för att jämföra två värden. Flow kan använda följande operatorer:
- Lika med
- Inte lika med
- Större än och Större än eller lika med
- Mindre än och Mindre än eller lika med
- Någon av
- Inte något av
- Inkluderar
- Ingår inte
- Börjar med
- Börjar inte med
- Slutar med
- Slutar inte med
Lika med
Lika med jämför värden för att kontrollera om de är likadana. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount
från dina butiksdata och jämförs med det andra värdet, 50.
Om det första värdet är lika med 50, så stämmer villkoret. Ordern är annullerad.
Inte lika med
Inte lika med jämför värden för att avgöra om de inte är likadana. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount
från dina butiksdata och jämförs med det andra värdet, 50.
Om det första värdet är lika med 93, så stämmer villkoret. Ordern är annullerad.
Större än och Större än eller lika med
Större än och Större än eller lika med jämför värden för att se om det första värdet är större än, eller större än eller lika med, det andra värdet. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount
från dina butiksdata och jämförs med det andra värdet, 50.
Om värdet som hämtats från din butik är 137, så stämmer villkoret, eftersom 137 är större än 50. Ordern är annullerad.
Mindre än och Mindre än eller lika med
Mindre än och Mindre än eller lika med jämför värden för att se om det första värdet är mindre än, eller mindre än eller lika med, det andra värdet. I följande exempel hämtas värdet för order.currentTotalDiscountsSet.shopMoney.amount
från dina butiksdata och jämförs med det andra värdet, 50.
Om värdet som hämtas från din butik är 47 är villkoret sant, eftersom 47 är mindre än eller lika med 50. Ordern annulleras.
Minst en av
Operatorn minst en av kontrollerar om fältet är lika med något värde i den angivna listan. De värden som ska kontrolleras måste anges individuellt och följas av Retur-tangenten (på samma sätt som taggar). Att använda minst en av på en tom matris leder till en felaktig bedömning. I följande exempel hämtas värdet för order.lineitem.product.title
från dina butiksdata och jämförs med den andra värdeuppsättningen: ananas, guava, kiwi.
Om värdet som hämtas från din butik är guava är villkoret sant, eftersom guava ingår i uppsättningen ananas, guava, kiwi. Ordern annulleras.
Ingen av
Operatorn ingen av kontrollerar om fältet inte är lika med något av värdena i den angivna listan. De värden som ska kontrolleras måste anges individuellt och följas av Retur-tangenten (på samma sätt som taggar). I följande exempel hämtas värdet för order.lineitem.product.title
från dina butiksdata och jämförs med den andra värdeuppsättningen: ananas, guava, kiwi.
Om värdet som hämtas från din butik är hallon är villkoret sant, eftersom hallon inte ingår i uppsättningen ananas, guava, kiwi. Ordern annulleras.
Inkluderar
Inkluderar jämför värden för att avgöra om någon av de första värdeinmatningarna inkluderar data i den andra värdeinmatningen. I följande exempel hämtas värdet för order.lineitem.product.title
från dina butiksdata och jämförs med det andra värdet, skrot.
Om värdet som hämtas från din butiksdata är skyskrapa är villkoret sant, eftersom den exakta strängen skrapa ingår i strängen skyskrapa. Ordern annulleras.
Ingår inte
Inkluderar inte jämför värden för att avgöra om någon av de första värdeinmatningarna inte inkluderar data i den andra värdeinmatningen. I följande exempel hämtas värdet för order.lineitem.product.title
från dina butiksdata och jämförs med det andra värdet, skrot.
Om värdet som hämtas från dina butiksdata är metallskrot är villkoret sant, eftersom den exakta strängen skrot inte ingår i strängen metallskrot. Ordern annulleras.
Börjar med
Börjar med jämför värden för att se om det första värdet börjar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.shippingAddress.country
från dina butiksdata och jämförs med det andra värdet, Stor.
Om värdet som hämtas från din butik är Storbritannien är villkoret sant eftersom strängen Stor inleder strängen Storbritannien. Ordern annulleras.
Börjar inte med
Börjar inte med jämför värden för att se om det första värdet inte börjar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.shippingAddress.country
från dina butiksdata och jämförs med det andra värdet, Stor.
Om värdet som hämtas från din butik är Kanada är villkoret sant, eftersom strängen Kanada inte inleder strängen Storbritannien. Ordern annulleras.
Slutar med
Slutar med jämför värden för att se om det första värdet slutar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.lineitems.product.title
från dina butiksdata och jämförs med det andra värdet, sista tillgängliga.
Om värdet som hämtas från din butik är sportsockor sista tillgängliga är villkoret sant, eftersom strängen sportsockor sista tillgängliga slutar med strängen sista tillgängliga. Ordern annulleras.
Slutar inte med
Slutar inte med jämför värden för att se om det första värdet inte slutar med de data som utgör det andra värdet. I följande exempel hämtas värdet för order.lineitems.product.title
från dina butiksdata och jämförs med det andra värdet, sista tillgängliga.
Om värdet som hämtas från din butik är "sportsockor nya" är villkoret sant, eftersom strängen "sportsockor nya" inte slutar med strängen "sista tillgängliga". Ordern annulleras.
Inga eller tomma operatorer
Tomt eller finns inte
Vissa fält i dina data kan vara tomma. Exempel: order.cancelReason
returnerar null
om en order inte avbryts. Använd tomt eller finns inte om du vill returnera true
när ett fält är tomt eller null
och false
om det finns.
Inte tomt och finns
Vissa fält i dina data kan vara tomma. Exempel: order.cancelReason
returnerar null
om en order inte avbryts. Använd Inte tomt och finns om du vill returnera true
när ett fält inte är tomt och false
när det är tomt.
Listoperatorer
Listoperatorer kombineras med fältnivåoperatorer för att du ska kunna kontrollera villkoren för data som ingår i listor.
Precis som i exemplet med "minst en" kanske du vill kontrollera om en order innehåller en viss produkt (finns i order.lineItems
) med en specifik tagg (en lista under order.lineItems.product.tags
). I båda fallen används listoperatorn minst en av.
Flow tillhandahåller tre operatorer för att arbeta med listor: minst en av, ingen av och alla.
Minst en av
För de flesta villkor med listor används minst en av. Operatorn returnerar true
om någon av artiklarna i listan matchar villkoret. Om du till exempel vill kontrollera om en order innehåller en produkt med en specifik tagg, använder du minst en av. När listan är tom, eller när villkoret inte uppfylls, returnerar villkoret false
.
Ingen av
I vissa fall kanske du vill kontrollera om en lista inte innehåller en artikel. Det bästa sättet att skapa detta villkor är att ändra listoperatorn till ingen av. Operatorn returnerar true
om ingen av artiklarna i listan matchar villkoret. Om listan är tom returneras även true
. Om du till exempel vill kontrollera om en produkt inte innehåller taggen presale
, använder du None of product tags is equal to presale
.
Alla
I begränsade fall kanske du vill kontrollera om alla artiklar i en lista matchar ett villkor. Du kanske till exempel vill kontrollera om alla artiklar i en order har en specifik produktsäljare med namnet Acme
. För detta använder du All of order line items have a product.vendor equal to Acme
.
Ordna villkor
Du kan skapa arbetsflöden som har flera villkor, som vart och ett kan resultera i olika åtgärder. Ordningen på villkoren är viktig. Kontrollen av villkoren börjar i början av arbetsflödet och fortsätter systematiskt genom varje villkor. Kontrollen stoppas när ett villkor är uppfyllt.
Kombinera flera kriterier till ett villkor
När du skapar ett villkor kan du ange flera kriterier. Du kan välja hur dessa separata kriterier ska kombineras.
Om alla villkor uppfylls
Om du väljer Om alla villkor är uppfyllda får du svaret "sant" endast om varje kriterium som du ställer in är sant. Det är som en AND
-sats i programmering.
Du skapar till exempel ett arbetsflöde för att tagga kunder som befinner sig i Kanada och spenderar mer än 500 USD på en enda order.
Arbetsflödet taggar kunden endast om kunden befinner sig i Kanada och spenderar mer än 500 dollar i ordern. Om något av dessa villkor är falskt taggas inte kunden.
Om något av villkoren uppfylls
Om du väljer Om något av villkoren uppfylls får du svaret "sant" om något av de kriterier du ställer in är sant. Det är som en OR
-sats i programmering.
Du skapar till exempel ett arbetsflöde för att tagga ordrar som anses ha hög eller medelhög risk.
Arbetsflödet taggar ordern om den har hög eller medelhög risk. Så länge ett av dessa villkor är sant taggas ordern.
Kombinera villkor och åtgärder
Du kan sätta samman villkor för att göra ett stort villkor. När villkoren är sammanslagna måste alla villkor vara uppfyllda för att hela villkoret ska gälla. Om ett villkor inte uppfylls är hela villkoret falskt. I följande exempel måste kunden acceptera marknadsföringsmaterial och det totala priset för ordern måste uppnå ett visst tröskelvärde.
På samma sätt kan du kombinera åtgärder så att flera åtgärder kan köras. I följande exempel används flera villkor för att kontrollera om en kund är berättigad till ett lojalitetsprogram baserat på det totala belopp som har spenderats i butiken. I exemplet ovan kontrolleras följande villkor i den ordning som de visas:
- Om det totala priset är högre än 1 000 USD och kunden går med på att acceptera marknadsföring, så taggar du dem med Guld-taggen.
- Om det totala priset är mindre än 1 000 USD men mer än 500 USD och kunden går med på att acceptera marknadsföring, så taggar du dem med Silver-taggen.
- Om kunden har spenderat mer än 200 USD och kunden går med på att acceptera marknadsföring, så taggar du dem med Brons-taggen.
Statiska och dynamiska data i villkor
Vanligtvis är det andra värdet i ett villkor ett statiskt, manuellt angivet värde (till exempel product.title == "your title"
). Detta värde förblir detsamma varje gång arbetsflödet körs.
Du kan även använda dynamiska värden om fältet för det andra värdet visar en </>
-symbol. Dynamiska värden hämtas från din butiksdata varje gång arbetsflödet körs. För att använda ett dynamiskt värde klickar du på </>
-symbolen och väljer det värde du vill kontrollera mot. Dynamiska värden är inte tillgängliga för alla fält.
Du skapar till exempel ett arbetsflöde som taggar en order om landet i orderns faktureringsadress matchar landet i dess leveransadress.
I det här exemplet hämtas både det första och det andra värdet från din butiksdata istället för att en statisk sträng anges manuellt och kontrolleras mot det andra värdet. Om landet i faktureringsadressen som angavs av kunden är detsamma som landet som kunden angav i leveransadressen är villkoret sant och ordern taggas.
Du kan ibland behöva använda dynamiska data som är av fel typ. Du kan till exempel behöva jämföra ett nummer som lagras som en sträng med ett annat nummer. I det här fallet kan du använda alternativet Kör kod för att konvertera data till rätt typ.