Betingelser i Shopify Flow

Betingelser fortsætter en arbejdsgang, når bestemte regler er opfyldt, f.eks. starten på en hvis-så-erklæring. Når du angiver en betingelse, vælger du kriterier fra felter i GraphQL Admin API (f.eks. product.title), en logisk operator (f.eks. er lig med) og en værdi, der skal sammenlignes med (f.eks. Blå jeans). Når en arbejdsgang evaluerer en betingelse, tjekker Flow den værdi, der er defineret i arbejdsgangen, mod den værdi, der returneres for din butik, og viser derefter resultaterne i kørslen af arbejdsgangen. For bedre at forstå de felter og værdier, der er tilgængelige til at definere betingelser, kan du lære, hvordan du forhåndsviser butiksdata.

Få mere at vide om det grundlæggende i betingelser.

Datatyper, der bruges med Flow

Når du angiver en betingelse, vælger du et kriterium fra de tilgængelige felter i Admin API, og Flow evaluerer det mod den værdi, der returneres for din butik.

Flow understøtter følgende datatyper:

  • Float: Float-værdier er tal med decimaler. F.eks. 4,25.
  • Integer: Integer-værdier er hele tal uden decimaler. F.eks. 42.
  • Dato: Datoværdier er en numerisk repræsentation af datoen. F.eks. 01012021.
  • Streng: Strengværdier er tekst. Sammenligninger, der bruger strengværdier, skelner ikke mellem store og små bogstaver.
  • Boolesk: Booleske værdier er enten sand eller falsk.
  • Enum: Enum-værdier er datasæt, der gør det muligt for en variabel at være et sæt af foruddefinerede konstanter.

Logiske operatorer

Logiske operatorer definerer, hvordan betingelsen anvendes. Betingelser kan tjekke simple egenskaber, 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å tjekke mere komplekse egenskaber.

Operatorer kan enten være operatorer på feltniveau, f.eks. er lig med eller er ikke lig med, eller listeoperatorer, f.eks. mindst én af eller ingen af.

Operatorer på feltniveau

Operatorer på feltniveau bruges til at sammenligne 2 værdier. Flow kan bruge følgende operatorer:

Liste over operatorer på feltniveau, der er tilgængelige i Shopify Flow.
OperatorBeskrivelseEksempel
Er lig med Sammenligner værdier for at tjekke, om de er ens. Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.

Hvis ordrens samlede rabatter er præcis 50, er betingelsen sand.
Er ikke lig med Sammenligner værdier for at tjekke, om de ikke er ens. Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.

Hvis ordrens samlede rabatter ikke er præcis 50, er betingelsen sand.
Større end og Større end eller lig med Sammenligner værdier for at tjekke, om den første værdi er større end, eller større end eller lig med, den anden værdi. Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.

Hvis værdien af ordrens samlede rabatter er 137, er betingelsen sand, da 137 er større end 50.
Mindre end og Mindre end eller lig med Sammenligner værdier for at tjekke, om den første værdi er mindre end, eller mindre end eller lig med, den anden værdi. Værdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra dine butiksdata og sammenlignes med den anden værdi, 50.

Hvis ordrens samlede rabatter er 47, er betingelsen sand, da 47 er mindre end eller lig med 50.
Mindst én af Tjekker, om feltet er lig med en af værdierne på den angivne liste. Værdierne skal indtastes enkeltvist og efterfølges af et tryk på Enter-tasten (svarende til tags). Anvendes det på et tomt array, resulterer det i en falsk evaluering. Værdien for order.lineitem.product.title sammenlignes med: pineapple, guava, kiwi.

Hvis produkttitlen for varelinjen er guava, er betingelsen sand, da "guava" er inkluderet på den liste, du har angivet.
Ingen af Tjekker, om feltet ikke er lig med nogen af værdierne på den angivne liste. Værdien for order.lineitem.product.title sammenlignes med: pineapple, guava, kiwi.

Hvis produkttitlen for varelinjen er raspberry, er betingelsen sand, da "raspberry" ikke er inkluderet på den liste, du har angivet.
Inkluderer Sammenligner værdier for at tjekke, om den første inputværdi indeholder den anden inputværdi. Værdien for order.lineitem.product.title sammenlignes med: berry.

Hvis produkttitlen for varelinjen er strawberry, er betingelsen sand, da "berry" indgår i "strawberry".
Inkluderer ikke Sammenligner værdier for at tjekke, om den første inputværdi ikke indeholder den anden inputværdi. Værdien for order.lineitem.product.title sammenlignes med: berry.

Hvis varelinjens produkttitel er apple, er betingelsen sand, da "berry" ikke er inkluderet i "apple".
Begynder med Sammenligner værdier for at tjekke, om den første værdi begynder med dataene i den anden værdi. Værdien for order.shippingAddress.country sammenlignes med: United.

Hvis landet for ordrens leveringsadresse er United Kingdom, er betingelsen sand, da "United Kingdom" starter med "United".
Begynder ikke med Sammenligner værdier for at tjekke, om den første værdi ikke begynder med dataene i den anden værdi. Værdien for order.shippingAddress.country sammenlignes med: United.

Hvis landet for ordrens leveringsadresse er Canada, er betingelsen sand, da "United Kingdom" ikke starter med "Canada".
Slutter med Sammenligner værdier for at tjekke, om den første værdi slutter med dataene i den anden værdi. Værdien for order.lineitems.product.title sammenlignes med: pie.

Hvis varelinjens produkttitel er key lime pie, er betingelsen sand, da "key lime pie" slutter på "pie".
Slutter ikke med Sammenligner værdier for at tjekke, om den første værdi ikke slutter med dataene i den anden værdi. Værdien for order.lineitems.product.title sammenlignes med: pie.

Hvis varelinjens produkttitel er chocolate cake, er betingelsen sand, da "chocolate cake" ikke slutter på "pie".

Null- eller tomme operatorer

Liste over null- og tomme operatorer i betingelser i Shopify Flow.
OperatorBeskrivelseSand/falsk-betingelse
Tom eller findes ikkeTjekker, om et felt er tomt (ikke har nogen værdi) eller ikke findes (er null). Returnerer true, når feltet er tomt eller null, og false, hvis det findes.
Ikke tom og findesTjekker, om et felt findes og ikke er tomt eller null. Returnerer true, når feltet ikke er tomt og findes, og false, når det er tomt.

Listeoperatorer

Listeoperatorer kombineres med operatorer på feltniveau, så du kan tjekke betingelser for data, der er inkluderet i lister.

Som i eksemplet med "mindst én" kan du f.eks. tjekke, om en ordre indeholder et bestemt produkt (placeret i order.lineItems) med et bestemt tag (en liste under order.lineItems.product.tags). I begge tilfælde bruger eksemplet listeoperatoren mindst én af.

Flow har 3 operatorer til at arbejde med lister: Mindst én af, Ingen af og Alle af.

Tabel over listeoperatorer i betingelser i Shopify Flow.
OperatorBeskrivelseEksempel på brug
Mindst én afKontrollerer, om nogen elementer på listen matcher den angivne betingelse.

Returnerer true, hvis et eller flere elementer på listen matcher. Hvis listen er tom, eller ingen elementer matcher, returneres false.
Tjek, om en ordre indeholder et produkt med et bestemt tag, ved at bruge Mindst én af ordrens varelinjer.produkt.tags er lig med tagnavn.
Ingen afKontrollerer, at ingen af elementerne på listen matcher den angivne betingelse.

Returnerer true, hvis ingen af elementerne matcher betingelsen. Hvis listen er tom, returneres true.
Kontrollér, om et produkt ikke har tagget presale ved hjælp af Ingen af produkttags er lig med presale.

En almindelig fejl er at forsøge at negere operatoren ved at bruge er ikke lig med. Brugen af denne dobbelte negation, Ingen af produkttags er ikke lig med presale, gør betingelsen både svær at forstå og ugyldig.
Alle afKontrollerer, at alle elementer på listen matcher den angivne betingelse.

Returnerer true, hvis hvert element på listen matcher betingelsen.
Tjek, om alle varer i en ordre har en bestemt produktforhandler ved navn Acme, ved at bruge Alle af ordrens varelinjer har en produkt.forhandler, der er lig med Acme.

Rækkefølge af betingelser

Du kan oprette workflows, der har flere betingelser, som hver især kan resultere i forskellige handlinger. Rækkefølgen af betingelserne er vigtig. Tjekket af betingelser starter i begyndelsen af et workflow og fortsætter systematisk gennem hver betingelse. Tjekket stopper, når en betingelse er opfyldt.

Dette eksempel bruger flere betingelser til at tjekke, om en kunde er berettiget til et loyalitetsprogram, baseret på det samlede beløb, som vedkommende har brugt i butikken. Betingelserne tjekkes i den rækkefølge, de vises i:

  1. Hvis den samlede pris er større end 1.000 $, og kunden accepterer at modtage markedsføring, skal vedkommende tagges med tagget Gold.
  2. Hvis den samlede pris er mindre end 1.000 $, men mere end 500 $, og kunden accepterer at modtage markedsføring, skal vedkommende tagges med tagget Silver.
  3. Hvis den samlede pris er mindre end 500 $, men mere end 200 $, og kunden accepterer at modtage markedsføring, skal vedkommende tagges med tagget Bronze.

Eksempel på et workflow, der tjekker en kundes samlede forbrug og tilføjer tags

Kombinering af flere kriterier i én betingelse

Når du opbygger en betingelse, kan du angive flere kriterier. Du kan vælge, hvordan disse separate kriterier skal kombineres for at afgøre, om den overordnede betingelse er sand eller falsk.

Hvis alle kriterier er opfyldt

Hvis du vælger OG, resulterer det kun i et sandt svar, hvis alle de kriterier, du har angivet, er sande.

Du kan f.eks. oprette et workflow til at tagge kunder, der befinder sig i Canada og bruger mere end 500 $ på en enkelt ordre.

Eksempel på et workflow, der bruger OG-betingelsen

Workflowet tagger kun kunden, hvis kunden befinder sig i Canada, og vedkommende bruger mere end 500 USD på ordren. Hvis en af disse betingelser er falsk, bliver kunden ikke tagget.

Hvis nogen af kriterierne er opfyldt

Hvis du vælger ELLER, resulterer det i et “sandt” svar, hvis et af de kriterier, du angiver, er sandt.

Du kan f.eks. oprette et workflow til at tagge ordrer med en risikoanbefaling om at annullere eller undersøge. Så længe en af disse betingelser er sand, bliver ordren tagget.

Eksempel på et workflow, der bruger ELLER-betingelsen

Statiske og dynamiske data i betingelser

Typisk er den anden værdi i en betingelse en statisk, manuelt indtastet værdi (f.eks. product.title == "din titel"). Denne værdi forbliver den samme, hver gang workflowet kører.

Du kan også bruge dynamiske værdier, hvis feltet for den anden værdi viser et Rediger kode-ikon. Dynamiske værdier hentes fra din butiks data, hver gang workflowet kører. Hvis du vil bruge en dynamisk værdi, skal du klikke på ikonet Rediger kode og vælge den værdi, du vil sammenligne med. 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 dens leveringsadresse.

Eksempel på et workflow, der tagger en ordre ved hjælp af data fra højre side for at tjekke, 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 manuelt at angive en statisk streng, der skal sammenlignes med for den anden værdi. Hvis landet i faktureringsadressen, som kunden har angivet, er det samme som det land, kunden har angivet i leveringsadressen, er betingelsen sand, og ordren bliver tagget.

Du kan lejlighedsvis få brug for at anvende dynamiske data, der er af den forkerte type. Du kan f.eks. have brug for at sammenligne et tal, der er gemt som en streng, med et andet tal. I dette tilfælde kan du bruge valgmuligheden Kør kode til at konvertere dataene til den korrekte type.

Skabeloner

De fleste skabeloner i skabelonbiblioteket indeholder en betingelse.

Eksempler på betingelser

Tjek, om mindst én vare på en liste matcher en betingelse

Dette eksempel viser en typisk betingelse, der tjekker, om mindst én vare på en liste matcher en bestemt værdi.

I dette tilfælde tjekker betingelsen, om et af produkterne i en ordre har et tag med værdien presale. For at opbygge denne betingelse skal du vælge order / lineItems / product / tags. Som standard vælger Flow mindst én af som den logiske operator:

Eksempel på konfigurationspanelet for en betingelse, der viser et tjek for mindst ét produkttag.

Delene mindst én af er listeoperatorer og bruges til at håndtere match på tværs af flere listeelementer. Delen er lig med er en operator på feltniveau, der afgør, om et enkelt listeelement matcher.

Tjek, om ingen af varerne på en liste matcher en betingelse

Dette eksempel viser en typisk betingelse, der tjekker, om ingen af varerne på en liste matcher en bestemt værdi. Et almindeligt problem, man skal overveje, er, at lister kan være tomme. Når en liste er tom, håndteres betingelsen af listeoperatoren (i dette tilfælde ingen af).

I dette tilfælde tjekker betingelsen, om ingen af produkttagsene er lig med foo:

Eksempel på konfigurationspanelet for en betingelse, der viser et tjek for ingen af et produkttag.

Betingelsen returnerer true, hvis (1) der ikke er nogen produkttags, eller (2) ingen af tagsene er foo. Ellers returnerer den false.

Tjek, om en vare på en liste matcher flere kriterier

Dette eksempel viser en typisk betingelse, der tjekker, om mindst én vare på en liste matcher to separate kriterier.

I dette tilfælde tjekker betingelsen, om et af produkterne i en ordre har et tag med værdien presale, og om det har en productType med værdien clothing.

Eksempel på konfigurationspanelet for en betingelse, der viser et tjek for mindst ét produkttag og en productType.

For at opbygge denne betingelse skal du:

  1. Vælg order / lineItems / product / tags for det første kriterie.
  2. Vælg Føj kriterier til for samme vare på listen lineItems. Bemærk: Det er en almindelig fejl at vælge det forkerte listeelement her.
  3. Vælg lineItems_item som objekt på øverste niveau og derefter product / productType for det andet kriterie. Bemærk: Det er også en almindelig fejl at vælge det forkerte objekt her.
  4. Vælg OG for at kombinere de to kriterier.
  5. Indtast værdierne presale og clothing for de to kriterier.