Betingelser i Shopify Flow
I Shopify Flow bruges betingelser til at afgøre, hvilken sti der skal følges i et workflow, normalt for at kontrollere, om der udføres en handling. Når du angiver en betingelse, vælger du et datafelt, der skal kontrolleres (som f.eks. en produkttitel), en logisk operator (som f.eks. equal to
) og en værdi, der skal kontrolleres i forhold til (Blue jeans
).
På denne side
Eksempler på betingelser
Kontrollér, om mindst én vare på en liste matcher en betingelse
Dette eksempel viser en almindelig betingelse, der kontrollerer, om mindst én vare på en liste matcher en bestemt værdi.
I dette tilfælde kontrollerer betingelsen, om et af produkterne i en ordre har tagget presale
. Hvis du vil opbygge denne betingelse, skal du vælge order / lineItems / product / tags
. Flow vælger som standard Mindst én af som den logiske operator:
Mindst én af-delene er listeoperatorer og bruges til at håndtere matches på tværs af flere listevarer. Er lig med-delen er en operator på feltniveau, der afgør, om en enkelt listevare matcher.
Kontrollér, at ingen af varerne på en liste matcher en betingelse
Dette eksempel viser en almindelig betingelse, der kontrollerer, at ingen af varerne på en liste matcher en bestemt værdi. Et almindeligt problem, som du bør tage højde for, er tomme lister. Hvis en liste er tom, håndteres betingelsen af listeoperatoren (i dette tilfælde ingen af).
I dette tilfælde kontrollerer betingelsen, at ingen af produkttaggene er lig med “foo”:
Betingelsen returnerer true
, hvis (1) der ikke er nogen produkttags, eller (2) ingen af taggene er “foo”. Ellers returnerer betingelsen false
.
Kontrollér, om en vare på en liste matcher flere kriterier
Dette eksempel viser en almindelig betingelse, der kontroller, om mindst én vare på en liste matcher to forskellige kriterier.
I dette tilfælde kontrollerer betingelsen, om et af produkterne i en ordre har tagget presale
, og om det har clothing
som productType.
Hvis du vil opbygge denne betingelse, bør du:
- Vælge order / lineItems / product / tags som det første kriterie.
- Vælge Tilføj kriterie for samme vare på listen lineItems. Bemærk: Det er en almindelig fejl at vælge den forkerte listevare her.
- Vælge lineItems_item som punktet på øverste niveau og derefter product / productType som det andet kriterie. Bemærk: Det er også en almindelig fejl at vælge et forkert objekt her.
- Vælge AND for at kombinere de to kriterier.
- Angive værdierne
presale
ogclothing
for de to kriterier.
Datatyper, der bruges med Flow
Den første værdi i enhver Flow-betingelser er data, der hentes i din butik og udtrækkes ved hjælp af GraphQL Admin API.
Flow understøtter følgende datatyper:
- Overførsel: Overførselsværdier er tal med en decimalværdi, f.eks. 4,25.
- Heltal: Heltalsværdier er hele tal, der ikke har en decimalværdi, f.eks. 42.
- Dato: Datoværdier er en numerisk angivelse af datoen, f.eks. 01012021.
- Streng: Strengværdier er tekst. Sammenligninger ved hjælp af strengværdier skelner ikke mellem store og små bogstaver.
- Boolesk: Booleske værdier er enten sande eller falske.
- Fasttekst: Fasttekstværdier er datasæt, der gør det muligt for en variabel at være et sæt foruddefinerede konstanter.
Logiske operatorer
Logiske operatorer definerer, hvordan din betingelse anvendes. Betingelser kan kontrollere enkle egenskaber, som f.eks. om en ordres samlede beløb er over et bestemt beløb, eller om en kunde accepterer markedsføring. Logiske operatorer kan også kontrollere, om der er mere komplekse egenskaber.
Operatorer kan enten være operatorer på feltniveau, som f.eks. lig med eller ikke lig med, eller listeoperatorer, som f.eks. mindst én af eller ingen af.
Operatorer på feltniveau
Operatorer på feltniveau bruges til at sammenligne to værdier. Flow kan bruge følgende operatorer:
- Er lig med
- Er ikke lig med
- Større end og Større end eller lig med
- Mindre end og Mindre end eller lig med
- Enhver af
- Ikke nogen af
- Inkluderer
- Inkluderer ikke
- Starter med
- Starter ikke med
- Slutter med
- Slutter ikke med
Er lig med
Er lig med sammenligner værdier for at se, om de er ens. I følgende eksempel hentes værdien for order.currentTotalDiscountsSet.shopMoney.amount
fra dine butiksdata og sammenlignes med den anden værdi, 50.
Hvis den første værdi er lig med 50, er betingelsen sand. Ordren annulleres.
Er ikke lig med
Er ikke lig med sammenligner værdier for at se, om de er forskellige. I følgende eksempel hentes værdien for order.currentTotalDiscountsSet.shopMoney.amount
fra dine butiksdata og sammenlignes med den anden værdi, 50.
Hvis den første værdi er lig med 93, er betingelsen sand. Ordren annulleres.
Større end og Større end eller lig med
Større end og Større end eller lig med sammenligner værdier for at se, om den første værdi er større end, eller større end eller lig med, den anden værdi. I følgende eksempel hentes værdien for order.currentTotalDiscountsSet.shopMoney.amount
fra dine butiksdata og sammenlignes med den anden værdi, 50.
Hvis den værdi, der er hentet fra din butik, er 137, er betingelsen sand, da 137 er større end 50. Ordren annulleres. Ordren annulleres.
Mindre end og Mindre end eller lig med
Mindre end og Mindre end eller lig med sammenligner værdier for at se, om den første værdi er mindre end, eller mindre end eller lig med, den anden værdi. I følgende eksempel hentes værdien for order.currentTotalDiscountsSet.shopMoney.amount
fra dine butiksdata og sammenlignes med den anden værdi, 50.
Hvis den værdi, der er hentet fra din butik, er 47, er betingelsen sand, da 47 er mindre end 50. Ordren annulleres.
Mindst én af
Mindst én af-operatorer kontrollerer, om feltet er lig med en værdi på den angivne liste. De værdier, der skal kontrolleres, skal angives enkeltvist efterfulgt af Enter-tasten (på samme måde som tags). Hvis du bruger Mindst én af på en tom matrix, medfører det en falsk vurdering. I følgende eksempel hentes værdien for order.lineitem.product.title
fra dine butiksdata og sammenlignes med det andet sæt værdier: ananas, guava, kiwi.
Hvis den værdi, der hentes fra din butik, er guava, er betingelsen sand, da guava er inkluderet i matrixen ananas, guava, kiwi. Ordren annulleres.
Ikke nogen af
Ikke nogen af-operatorer kontrollerer, om feltet ikke er lig med en værdi på den angivne liste. De værdier, der skal kontrolleres, skal angives enkeltvist efterfulgt af Enter-tasten (på samme måde som tags). I følgende eksempel hentes værdien for order.lineitem.product.title
fra dine butiksdata og sammenlignes med det andet sæt værdier: ananas, guava, kiwi.
Hvis den værdi, der hentes fra din butik, er hindbær, er betingelsen sand, da hindbær ikke er inkluderet i matrixen ananas, guava, kiwi. Ordren annulleres.
Inkluderer
Inkluderer sammenligner værdier for at kontrollere, om noget det første værdiinput inkluderer dataene i det andet værdiinput. I følgende eksempel hentes værdien for order.lineitem.product.title
fra dine butiksdata og sammenlignes med den anden værdi, skrot.
Hvis den værdi, der hentes fra dine butiksdata, er "skrotbil", er betingelsen sand, da den præcise streng "skrot" er inkluderet i strengen "skrot" er inkluderet i strengen "skrotbil". Ordren annulleres.
Inkluderer ikke
Inkluderer ikke sammenligner værdier for at kontrollere, om det første værdiinput ikke inkluderer dataene i det andet værdiinput. I følgende eksempel hentes værdien for order.lineitem.product.title
fra dine butiksdata og sammenlignes med den anden værdi, skrot.
Hvis den værdi, der er hentet fra dine butiksdata, er skrotmetal, er betingelsen sand, da den præcise streng for “skrot” ikke er inkluderet i strengen “skrotmetal”. Ordren annulleres.
Starter med
Starter med sammenligner værdier for at kontrollere, om den første værdi starter med dataene i den anden værdi. I følgende eksempel hentes værdien for order.shippingAddress.country
fra dine butiksdata og sammenlignes med den anden værdi, Stor.
Hvis den værdi, der hentes fra din butik, er "Storbritannien", er betingelsen sand, fordi strengen "Storbritannien" starter med strengen "Stor". Ordren annulleres.
Starter ikke med
Starter ikke med sammenligner værdier for at kontrollere, om den første værdi ikke starter med dataene i den anden værdi. I følgende eksempel hentes værdien for order.shippingAddress.country
fra dine butiksdata og sammenlignes med den anden værdi, Stor.
Hvis den værdi, der hentes fra din butik, er "Canada", er betingelsen sand, fordi strengen "Canada" ikke starter med strengen "Storbritannien". Ordren annulleres.
Slutter med
Slutter med sammenligner værdier for at kontrollere, om den første værdi slutter med dataene i den anden værdi. I følgende eksempel hentes værdien for order.lineitems.product.title
fra dine butiksdata og sammenlignes med den anden værdi, sidst tilgængelig.
Hvis den værdi, der hentes fra din butik, er “sportsstrømper senest tilgængelig”, er betingelsen sand, fordi strengen “sportsstrømper senest tilgængelig” slutter med strengen “senest tilgængelig”. Ordren annulleres.
Slutter ikke med
Slutter ikke med sammenligner værdier for at kontrollere, om den første værdi ikke slutter med dataene i den anden værdi. I følgende eksempel hentes værdien for order.lineitems.product.title
fra dine butiksdata og sammenlignes med den anden værdi, sidst tilgængelig.
Hvis den værdi, der hentes fra din butik, er “sportsstrømper nye”, er betingelsen sand, fordi strengen “sportsstrømper nye” ikke slutter med strengen “senest tilgængelig”. Ordren annulleres.
Ugyldige eller tomme operatorer
Tom eller eksisterer ikke
Nogle felter i dine data kan være tomme. order.cancelReason
returnerer f.eks. null
, hvis en ordre ikke er annulleret. Brug tom eller eksisterer ikke, hvis du vil returnere true
, når et felt er tomt eller null
og false
, hvis det er til stede.
Ikke tom og eksisterer
Nogle felter i dine data kan være tomme. order.cancelReason
returnerer f.eks. null
, hvis en ordre ikke er annulleret. Brug Ikke tom og eksisterer, hvis du vil returnere true
, når et felt ikke er tomt og false
, når det er tomt.
Listeoperatorer
Listeoperatorer kombineres med operatorer på feltniveau, så du kan kontrollere betingelser for data, der er inkluderet i lister.
Du kan f.eks. vælge at kontrollere, om en ordre indeholder et specifikt produkt (i order.lineItems
) med et specifikt tag (en liste under order.lineItems.product.tags
) på samme måde som i “mindst én”-eksemplet. I begge tilfælde bruger eksemplet listeoperatoren Mindst én af.
Flow indeholder 3 operatorer til listearbejde: Mindst én af, Ingen af og Alle.
Mindst én af
De fleste betingelser med lister bruger Mindst én af. Denne operator returnerer true
, hvis en af varerne på listen matcher betingelsen. Hvis du f.eks. vil kontrollere, om en ordre indeholder et produkt med et specifikt tag, skal du bruge Mindst én af. Betingelsen returnerer false
, når listen er tom, eller hvis betingelsen ikke opfyldes.
Ingen af
I nogle tilfælde kan det være en god idé at kontrollere, at en liste ikke indeholder en vare. Den bedste måde at opbygge denne betingelse på er at ændre listeoperatoren til Ingen af. Denne operator returnerer true
, hvis ingen af varerne på listen matcher betingelsen. Det vigtigste er, at den også returnerer true
, hvis listen er tom. Hvis du f.eks. vil kontrollere, at et produkt ikke indeholder tagget presale
, skal du bruge None of product tags is equal to presale
.
Alle
I nogle få tilfælde kan det være en god idé at kontrollere, om alle varer på en liste matcher en betingelse. Du kan f.eks. vælge at kontrollere, om alle varer i en ordre har en specifik produktforhandler kaldet Acme
. Du skal bruge All of order line items have a product.vendor equal to Acme
til dette.
Betingelser for bestilling
Du kan oprette workflows med flere betingelser, og som hver især kan medføre forskellige handlinger. Rækkefølgen af betingelserne har betydning. Kontrollen af betingelser starter først i workflowet og fortsætter derefter systematisk gennem hver betingelse. Kontrollen stopper, når en betingelse er opfyldt.
Sådan kombinerer du flere kriterier i én betingelse
Når du opbygger en betingelse, kan du angive flere kriterier. Du kan vælge, hvordan disse enkeltstående kriterier skal kombineres.
Hvis alle betingelser er opfyldt
Hvis du vælger Hvis alle betingelser er opfyldt, resulterer det kun i et sandt svar, hvis alle kriterier, du har angivet, er sande. Det er som et AND
-udsagn i programmering.
Du kan f.eks. oprette et workflow, der tagger kunder, som befinder sig i Canada og bruger mere end 500 USD på en enkelt ordre.
Workflowet tagger kun kunden, hvis denne befinder sig i Canada og bruger mere end 500 CAD på ordren. Kunden tagges ikke, hvis en af disse betingelser er falsk.
Hvis nogen betingelser er opfyldt
Hvis du vælger Hvis nogen betingelser er opfyldt, resulterer det i et sandt svar, hvis et hvilket som helst af de kriterier, du har angivet, er sandt. Det er som et OR
-udsagn i programmering.
Du kan f.eks. oprette et workflow, der tagger ordrer, som anses for at have høj eller medium risiko.
Workflowet tagger ordren, hvis den enten har høj eller medium risiko. Ordren tagges, hvis én af disse betingelser er sand.
Sådan kombinerer du betingelser og handlinger
Du kan kombinere betingelser for at skabe én stor betingelse. Når du kombinerer betingelser, skal alle betingelser være opfyldt, for at hele betingelsen kan være sand. Hvis én af betingelserne ikke er opfyldt, er hele betingelsen falsk. I følgende eksempel skal kunden acceptere markedsføringsmateriale, og den samlede pris for ordren skal opfylde en bestemt grænse.
På samme måde kan du kombinere handlinger, så der kan køre flere handlinger. Dette eksempel bruger flere betingelser til at kontrollere, om en kunde er berettiget til et loyalitetsprogram ud fra på det samlede beløb, som kunden har købt for i butikken. I ovenstående eksempel kontrolleres følgende betingelser i den rækkefølge, som de vises i:
- Du skal tagge kunden med tagget i guld, hvis den samlede pris er over 1.000 USD, og kunden accepterer at modtage markedsføring.
- Du skal tagge kunden med tagget i sølv, hvis den samlede pris er under 1.000 USD men over 500 USD, og kunden accepterer at modtage markedsføring.
- Du skal tagge kunden med tagget i bronze, hvis kunden har købt for over 200 USD, og kunden accepterer at modtage markedsføring.
Statiske og dynamiske data i betingelser
Normalt er den anden værdi i en betingelse en statisk, manuelt indtastet værdi (som f.eks. product.title == "your title"
). Denne værdi forbliver den samme, hver gang workflowet køres.
Du kan også bruge dynamiske værdier, hvis feltet for den anden værdi viser symbolet </>
. Dynamiske værdier hentes fra dine butiksdata, hver gang workflowet kører. Hvis du vil bruge en dynamisk værdi, skal du klikke på symbolet </>
og vælge den værdi, du vil kontrollere i forhold til. Dynamiske værdier er ikke tilgængelige for alle felter.
Du kan f.eks. oprette et workflow, der tagger en ordre, hvis landet i ordrens faktureringsadresse matcher landet i leveringsadressen.
I dette eksempel hentes både den første og den anden værdi fra din butiks data, i stedet for at der manuelt angives en statisk streng, der skal kontrolleres i forhold til, for den anden værdi. Hvis landet i den faktureringsadresse, som kunden har angivet, er det samme som det land, kunden har angivet i leveringsadressen, er betingelsen sand, og ordren tagges.
Du er fra tid til anden muligvis nødt til at bruge dynamiske data, der har den forkerte type. Du kan f.eks. have behov for at sammenligne et tal, der er gemt som en streng, med et andet tal. I dette tilfælde kan du bruge indstillingen Kør kode til at konvertere dataene til den korrekte type.