Betingelser i Shopify Flow

Betingelser fortsetter en arbeidsflyt når bestemte regler er oppfylt, som for eksempel starten på en hvis-så-setning. Når du angir en betingelse, velger du kriterier fra felt i GraphQL Admin API (som product.title), en logisk operator (som equal to) og en verdi å sjekke mot (som Blue jeans). Når en arbeidsflyt evaluerer en betingelse, sjekker Flow verdien som er definert i arbeidsflyten mot verdien som returneres for butikken, og viser deretter resultatene i arbeidsflytkjøringen. For å bedre forstå feltene og verdiene som er tilgjengelige for å definere betingelser, kan du finne ut hvordan du forhåndsviser butikkdata.

Finn ut mer om det grunnleggende om betingelser.

Datatyper som brukes med Flow

Når du angir en betingelse, velger du et kriterium fra feltene som er tilgjengelige i Admin API, og Flow evaluerer det mot verdien som returneres for butikken.

Flow støtter følgende datatyper:

  • Float: Float-verdier er tall med desimaler. For eksempel 4,25.
  • Integer: Integer-verdier er heltall som ikke har desimaler. For eksempel 42.
  • Date: Datoverdier er numeriske representasjoner av datoen. For eksempel 01012021.
  • String: Strengverdier er tekst. Sammenligninger som bruker strengverdier skiller ikke mellom store og små bokstaver.
  • Boolean: Boolske verdier er enten true eller false.
  • Enum: Enum-verdier er datasett som lar en variabel være et sett med forhåndsdefinerte konstanter.

Logiske operatorer

Logiske operatorer bestemmer hvordan betingelsen brukes. Betingelser kan sjekke enkle egenskaper, for eksempel om totalbeløpet for en bestilling er over et visst beløp, eller om en kunde godtar markedsføring. Logiske operatorer kan også sjekke mer komplekse egenskaper.

Operatorene kan enten være operatorer på feltnivå, for eksempel er lik eller er ikke lik, eller listeoperatorer, for eksempel minst én av eller ingen av.

Operatorer på feltnivå

Operatorer på feltnivå brukes til å sammenligne to verdier. Flow kan bruke følgende operatorer:

Liste over operatorer på feltnivå som er tilgjengelige i Shopify Flow.
OperatorBeskrivelseEksempel
Er lik Sammenligner verdier for å sjekke om de er like. Verdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra butikkdataene dine og sammenlignes med den andre verdien, 50.

Hvis de totale rabattene for bestillingen er nøyaktig lik 50, er betingelsen sann.
Er ikke lik Sammenligner verdier for å sjekke om de ikke er like. Verdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra butikkdataene dine og sammenlignes med den andre verdien, 50.

Hvis de totale rabattene for bestillingen ikke er nøyaktig lik 50, er betingelsen sann.
Større enn og Større enn eller lik Sammenligner verdier for å sjekke om den første verdien er større enn, eller større enn eller lik, den andre verdien. Verdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra butikkdataene dine og sammenlignes med den andre verdien, 50.

Hvis verdien for de totale rabattene for bestillingen er 137, er betingelsen sann, fordi 137 er større enn 50.
Mindre enn og Mindre enn eller lik Sammenligner verdier for å sjekke om den første verdien er mindre enn, eller mindre enn eller lik, den andre verdien. Verdien for order.currentTotalDiscountsSet.shopMoney.amount hentes fra butikkdataene dine og sammenlignes med den andre verdien, 50.

Hvis de totale rabattene for bestillingen er 47, er betingelsen sann, fordi 47 er mindre enn eller lik 50.
Minst én av Sjekker om feltet er lik en av verdiene i den angitte listen. Verdiene må angis enkeltvis og etterfølges av Enter-tasten (på samme måte som tagger). Bruk på en tom matrise resulterer i en usann evaluering. Verdien for order.lineitem.product.title sammenlignes med: pineapple, guava, kiwi.

Hvis produkttittelen for posten er guava, er betingelsen sann, fordi «guava» er inkludert i listen du oppga.
Ingen av Sjekker om feltet ikke er lik noen av verdiene i den angitte listen. Verdien for order.lineitem.product.title sammenlignes med: pineapple, guava, kiwi.

Hvis produkttittelen for posten er raspberry, er betingelsen sann, fordi «raspberry» ikke er inkludert i listen du oppga.
Inkluderer Sammenligner verdier for å sjekke om den første verdien inneholder den andre verdien. Verdien for order.lineitem.product.title sammenlignes med: berry.

Hvis produkttittelen for posten er strawberry, er betingelsen sann, fordi «berry» er inkludert i «strawberry».
Inkluderer ikke Sammenligner verdier for å sjekke om den første verdien ikke inneholder den andre verdien. Verdien for order.lineitem.product.title sammenlignes med: berry.

Hvis produkttittelen på posten er apple, er betingelsen sann fordi «berry» ikke er inkludert i «apple».
Starter med Sammenligner verdier for å sjekke om den første verdien starter med dataene i den andre verdien. Verdien for order.shippingAddress.country sammenlignes med: United.

Hvis landet for bestillingens leveringsadresse er United Kingdom, er betingelsen sann fordi «United Kingdom» starter med «United».
Starter ikke med Sammenligner verdier for å sjekke om den første verdien ikke starter med dataene i den andre verdien. Verdien for order.shippingAddress.country sammenlignes med: United.

Hvis landet for bestillingens leveringsadresse er Canada, er betingelsen sann fordi «United Kingdom» ikke starter med «Canada».
Slutter med Sammenligner verdier for å sjekke om den første verdien slutter med dataene i den andre verdien. Verdien for order.lineitems.product.title sammenlignes med: pie.

Hvis produkttittelen på posten er key lime pie, er betingelsen sann fordi «key lime pie» slutter på «pie».
Slutter ikke med Sammenligner verdier for å sjekke om den første verdien ikke slutter med dataene i den andre verdien. Verdien for order.lineitems.product.title sammenlignes med: pie.

Hvis produkttittelen på posten er chocolate cake, er betingelsen sann fordi «chocolate cake» ikke slutter på «pie».

Null- eller tom-operatorer

Liste over null- og tom-operatorer i Shopify Flow-betingelser.
OperatorBeskrivelseSann/usann-betingelse
Tom eller finnes ikkeSjekker om et felt er tomt (har ingen verdi) eller ikke finnes (er null). Returnerer sann når feltet er tomt eller null, og usann hvis det finnes.
Ikke tom og finnesSjekker om et felt finnes og ikke er tomt eller null. Returnerer sann når feltet ikke er tomt og finnes, og usann når det er tomt.

Listeoperatorer

Listeoperatorer kombineres med operatorer på feltnivå slik at du kan sjekke betingelser for data som er inkludert i lister.

Som i «minst én»-eksempelet kan det hende du vil sjekke om en bestilling inneholder et bestemt produkt (som ligger i order.lineItems) med en bestemt tagg (en liste under order.lineItems.product.tags). I begge tilfeller bruker eksempelet listeoperatoren minst én av.

Flow har tre operatorer for å jobbe med lister: Minst én av, Ingen av og Alle av.

Tabell over listeoperatorer i Shopify Flow-betingelser.
OperatorBeskrivelseEksempel på bruk
Minst én avSjekker om noen elementer i listen samsvarer med den angitte betingelsen.

Returnerer true hvis noen av elementene i listen samsvarer. Hvis listen er tom eller ingen elementer samsvarer, returneres false.
Sjekk om en bestilling inneholder et produkt med en bestemt tagg ved hjelp av Minst én av bestillingsposter.produkt.tagger er lik taggnavn.
Ingen avSjekker at ingen av elementene i listen samsvarer med den angitte betingelsen.

Returnerer true hvis ingen av elementene samsvarer med betingelsen. Hvis listen er tom, returneres true.
Sjekk om et produkt ikke har taggen presale ved å bruke None of product tags is equal to presale.

En vanlig feil er å prøve å negere operatoren ved å bruke is not equal to. Hvis du bruker denne doble negasjonen, None of product tags is not equal to presale, blir betingelsen både vanskelig å forstå og ugyldig.
Alle avSjekker at alle elementene i listen samsvarer med den angitte betingelsen.

Returnerer true hvis hvert element i listen samsvarer med betingelsen.
Sjekk om alle varene i en bestilling har en bestemt produktselger kalt Acme ved hjelp av Alle bestillingsposter har en produkt.selger som er lik Acme.

Rekkefølge på betingelser

Du kan opprette arbeidsflyter som har flere betingelser, der hver av dem kan resultere i ulike handlinger. Rekkefølgen på betingelsene er viktig. Kontrollen av betingelsene starter i begynnelsen av arbeidsflyten og fortsetter systematisk gjennom hver betingelse. Kontrollen stopper når en betingelse er oppfylt.

Dette eksempelet bruker flere betingelser for å sjekke om en kunde er kvalifisert for en kundeklubb basert på totalbeløpet de har brukt i butikken. Betingelsene sjekkes i den rekkefølgen de vises:

  1. Hvis totalprisen er større enn 1000 USD og kunden godtar å motta markedsføring, tagges de med Gull-taggen.
  2. Hvis totalprisen er mindre enn 1000 USD, men mer enn 500 USD, og kunden godtar å motta markedsføring, tagges de med Sølv-taggen.
  3. Hvis totalprisen er mindre enn 500 USD, men mer enn 200 USD, og kunden godtar å motta markedsføring, tagges de med Bronse-taggen.

Eksempel på en arbeidsflyt som sjekker en kundes totale brukte beløp og legger til tagger

Kombinere flere kriterier i én betingelse

Når du bygger en betingelse, kan du angi flere kriterier. Du kan velge hvordan disse separate kriteriene skal kombineres for å avgjøre om den overordnede betingelsen er sann eller usann.

Hvis alle kriterier er oppfylt

Å velge OG resulterer i et sant svar bare hvis alle kriteriene du angir er sanne.

Du kan for eksempel opprette en arbeidsflyt for å tagge kunder som befinner seg i Canada og bruker mer enn 500 USD på én enkelt bestilling.

Eksempel på en arbeidsflyt som bruker og-betingelsen

Arbeidsflyten tagger kunden bare hvis kunden befinner seg i Canada og bruker mer enn 500 USD i bestillingen. Hvis én av disse betingelsene er usann, blir ikke kunden tagget.

Hvis noen av kriteriene er oppfylt

Hvis du velger ELLER, resulterer det i et sant svar hvis ett av kriteriene du angir, er sant.

Du kan for eksempel opprette en arbeidsflyt for å tagge bestillinger med en risikovurdering på Avbryt eller Undersøk. Så lenge en av disse betingelsene er sann, blir bestillingen tagget.

Eksempel på en arbeidsflyt som bruker eller-betingelsen

Statiske og dynamiske data i betingelser

Vanligvis er den andre verdien i en betingelse en statisk, manuelt angitt verdi (som product.title == «din tittel»). Denne verdien forblir den samme hver gang arbeidsflyten kjører.

Du kan også bruke dynamiske verdier hvis feltet for den andre verdien viser et Rediger kode-ikon. Dynamiske verdier hentes fra butikkdataene hver gang arbeidsflyten kjører. For å bruke en dynamisk verdi klikker du på Rediger kode-ikonet og velger verdien du vil sammenligne med. Dynamiske verdier er ikke tilgjengelige for alle felt.

Du kan for eksempel opprette en arbeidsflyt som tagger en bestilling hvis landet i bestillingens fakturaadresse samsvarer med landet i leveringsadressen.

Eksempel på en arbeidsflyt som tagger en bestilling ved hjelp av dynamiske data for å sjekke at landet i fakturaadressen og leveringsadressen er det samme.

I dette eksempelet hentes både den første og den andre verdien fra butikkdataene, i stedet for at du manuelt angir en statisk streng å sammenligne med. Hvis landet i fakturaadressen kunden har angitt er det samme som landet kunden har angitt i leveringsadressen, er betingelsen sann, og bestillingen blir tagget.

Du kan av og til ha behov for å bruke dynamiske data av feil type. Du kan for eksempel måtte sammenligne et tall som er lagret som en streng, med et annet tall. I så fall kan du bruke alternativet Kjør kode for å konvertere dataene til riktig type.

Maler

De fleste malene i malbiblioteket inneholder en betingelse.

Eksempelbetingelser

Kontroller om minst én vare i en liste samsvarer med en betingelse

Dette eksempelet viser en typisk betingelse som kontrollerer om minst én vare i en liste samsvarer med en bestemt verdi.

I dette tilfellet kontrollerer betingelsen om et av produktene i en bestilling har taggen forhåndssalg. For å bygge denne betingelsen velger du bestilling / ordrelinjer / produkt / tagger. Som standard velger Flow minst én av som logisk operator:

Eksempel på konfigurasjonspanelet for en betingelse, som viser en kontroll for minst én produkttagg.

Delene minst én av er listeoperatorer og brukes til å håndtere samsvar på tvers av flere listeelementer. Delen er lik er en feltnivåoperator som avgjør om et enkelt listeelement samsvarer.

Kontroller om ingen av varene i en liste samsvarer med en betingelse

Dette eksempelet viser en typisk betingelse som kontrollerer om ingen av varene i en liste samsvarer med en bestemt verdi. Et vanlig problem å vurdere er at lister kan være tomme. Når en liste er tom, blir betingelsen håndtert av listeoperatoren (i dette tilfellet ingen av).

I dette tilfellet kontrollerer betingelsen om ingen av produkttaggene er lik foo:

Eksempel på konfigurasjonspanelet for en betingelse, som viser en kontroll for ingen produkttagger.

Betingelsen returnerer sann hvis (1) det ikke finnes noen produkttagger eller (2) ingen av taggene er foo. Ellers returnerer den usann.

Kontroller om en vare i en liste samsvarer med flere kriterier

Dette eksempelet viser en typisk betingelse som kontrollerer om minst én vare i en liste samsvarer med to separate kriterier.

I dette tilfellet kontrollerer betingelsen om et av produktene i en bestilling har taggen forhåndssalg og produkttypen klær.

Eksempel på konfigurasjonspanelet for en betingelse, som viser en kontroll for minst én produkttagg og en produkttype.

For å bygge denne betingelsen gjør du følgende:

  1. Velg bestilling / ordrelinjer / produkt / tagger for det første kriteriet.
  2. Velg Legg til kriterier for samme vareordrelinjer-listen. Merk: Det er en vanlig feil å velge feil listeelement her.
  3. Velg lineItems_item som objekt på toppnivå, og deretter produkt / produkttype` for det andre kriteriet. Merk: Det er også en vanlig feil å velge feil objekt her.
  4. Velg OG for å kombinere de to kriteriene.
  5. Angi verdiene forhåndssalg og klær for de to kriteriene.