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).

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:

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

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”:

If none of product / tags:
  tag_item
  is equal to
  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.

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

Hvis du vil opbygge denne betingelse, bør du:

  1. Vælge order / lineItems / product / tags som det første kriterie.
  2. 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.
  3. 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.
  4. Vælge AND for at kombinere de to kriterier.
  5. Angive værdierne presale og clothing 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 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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator “Mindst én af” til at annullere en ordre, hvis de hentede data inkluderer ananas, guava eller 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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger den logiske operator

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.

Eksempel på et workflow, der bruger

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.

Eksempel på et workflow, der bruger

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.

Eksempel på et workflow, der kontrollerer en kundes samlede forbrugsbeløb og tilføjer tags

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:

  1. Du skal tagge kunden med tagget i guld, hvis den samlede pris er over 1.000 USD, og kunden accepterer at modtage markedsføring.
  2. 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.
  3. 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.

Eksempel på et workflow, der tagger en ordre ved hjælp af RHS-data for at kontrollere, at en kundes fakturerings- og leveringsland er det samme.

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.

Er du klar til at begynde at sælge med Shopify?

Prøv det gratis