Betingelser i Shopify Flow

Betingelser brukes i Shopify Flow for å avgjøre hvilken bane som skal følges i en arbeidsflyt, vanligvis for å kontrollere om en handling er utført. Når du angir en betingelse, velger du et datafelt til å kontrollere (for eksempel en produkttittel), en logisk operatør (som for eksempel equal to), og en verdi det skal kontrolleres mot (Blue jeans).

Eksempelbetingelser

Kontroller om minst ett element i en liste samsvarer med en betingelse

Dette eksempelet viser en typisk betingelse som kontrollerer om minst ett element i en liste samsvarer med en bestemt verdi.

I dette tilfellet kontrollerer betingelsen om et av produktene i en bestilling har taggen presale. For å bygge denne betingelsen, velger du order / lineItems / product / tags. Som standard velger Flow at least one of som logisk operatør:

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

Delene i at least one of er listeoperatører, som brukes til å håndtere samsvar på tvers av flere listeelementer. Delen is equal to er en operatør på feltnivå, som avgjør hvorvidt ett enkelt listeelement samsvarer.

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

Dette eksempelet viser en typisk betingelse som kontrollerer om ingen av elementene i en liste samsvarer med en bestemt verdi. Et vanlig problem du bør ta høyde for, er at listene kan være tomme. Når en liste er tom, håndteres betingelsen av listeoperatøren (i dette tilfellet none of).

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

If none of product / tags:
  tag_item
  is equal to
  foo

Betingelsen returnerer true hvis (1) det ikke er noen produkttagger, eller (2) hvis ingen av taggene er foo. Ellers returnerer den false.

Kontroller om et element i en liste samsvarer med flere kriterier

Dette eksempelet viser en typisk betingelse som kontrollerer om minst ett element i listen samsvarer med to separate kriterier.

I dette tilfellet kontrollerer betingelsen om et av produktene i bestillingen har taggen presale, og om den har productType clothing.

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

For å bygge denne betingelsen, bør du:

  1. Velge order / lineItems / product / tags for første kriterie.
  2. Velge å Legge til kriterier for samme element i listen lineItems. Merk: Det er en vanlig feil å velge feil listeelement her.
  3. Velge lineItems_item som toppnivåobjekt, og deretter product / productType for andre kriterie. Merk: Det er også en vanlig feil å velge feil objekt her.
  4. Velg AND for å kombinere de to kriteriene.
  5. Angi verdiene presale og clothing for de to kriteriene.

Datatyper som brukes med Flow

Den første verdien i en Flow-betingelse er data hentet fra butikken din, og hentes fra GraphQL Admin API.

Flow støtter følgende typer data:

  • Flyt: Flytverdier er tall med et desimalbeløp. For eksempel 4,25.
  • Integer: Heltallsverdier er heltall som ikke har desimaler. For eksempel 42.
  • Dato: Datoverdier er en numerisk representasjon av datoen. For eksempel 01012021.
  • Streng: Strengverdier er tekst. Sammenligninger som bruker strengverdier skiller ikke mellom små og store bokstaver.
  • Boolsk: En boolsk verdi er enten sann eller usann.
  • Enum: Enum-verdier er datasett som tillater at en variabel kan bestå av et sett forhåndsdefinerte konstanter.

Logiske operatører

Logiske operatører definerer hvordan betingelsen din brukes. Betingelser kan sjekke enkle egenskaper, for eksempel hvorvidt totalsummen for en bestilling er over et bestemt beløp, eller om en kunde godtar markedsføring. Logiske operatører kan også se etter mer kompliserte egenskaper.

Operatørene kan være enten operatører på feltnivå, som equal to eller not equal to, eller listeoperatører, som at least one of eller none of.

Operatører på feltnivå

Operatører på feltnivå brukes for å sammenligne to verdier. Flow kan bruke følgende operatører:

Tilsvarer

Equal to sammenligner verdier for å se om de er like. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount fra butikkdataene, og sammenlignes med den andre verdien 50.

Et eksempel på en arbeidsflyt som bruker lik-operatøren for å kansellere en bestilling hvis de hentede opplysningene er lik 50

Hvis den første verdien tilsvarer 50, er betingelsen sann. Bestillingen kanselleres.

Tilsvarer ikke

Not equal to sammenligner verdier for å se om de ikke er like. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount fra butikkdataene, og sammenlignes med den andre verdien 50.

Eksempel på en arbeidsflyt som bruker en ikke lik logisk operatør for å kansellere en bestilling hvis de hentede dataene ikke er lik 50

Hvis den første verdien tilsvarer 93, er betingelsen sann. Bestillingen kanselleres.

Større enn og Større enn eller lik

Greater than og Greater than or equal to sammenligner verdier for å se om den første verdien er større enn, eller større enn eller lik, den andre verdien. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount fra butikkdataene, og sammenlignes med den andre verdien 50.

Eksempel på en arbeidsflyt som bruker den logiske operatøren større enn til å kansellere en bestilling hvis de hentede dataene er større enn 50

Hvis verdien som hentes fra butikken er 137, er betingelsen sann, fordi 137 er større enn 50. Bestillingen kanselleres.

Mindre enn og Mindre enn eller lik

Less than og Less than or equal to sammenligner verdier for å se om den første verdien er mindre enn, eller mindre enn eller lik, den andre verdien. I følgende eksempel hentes verdien order.currentTotalDiscountsSet.shopMoney.amount fra butikkdataene, og sammenlignes med den andre verdien 50.

Et eksempel på en arbeidsflyt som bruker den logiske mindre enn eller lik-operatøren for å kansellere en bestilling hvis de hentede opplysningene er mindre enn eller lik 50

Hvis verdien som er hentet fra butikken din er 47, er betingelsen sann, fordi 47 er mindre enn eller lik 50. Bestillingen blir kansellert.

At least one of

Operatøren At least one of kontrollerer om feltet tilsvarer noen av verdiene i den oppgitte listen. Verdiene som skal kontrolleres må angis enkeltvis, og etterfølges av Enter-tasten (på samme måte som tagger). Hvis du bruker At least one of i en tom matrise resulterer det i et false-resultat. I det følgende eksempelet hentes verdien for order.lineitem.product.title fra butikkens data, og sammenlignes med det andre settet med verdier: ananas, guava, kiwi.

Eksempel på en arbeidsflyt som bruker den logiske operatøren At least one of til å kansellere en bestilling hvis de innhentede dataene inneholder ananas, guava eller kiwi

Hvis verdien som hentes fra butikken din er guava, er betingelsen sann, fordi guava er inkludert i matrisen ananas, guava, kiwi. Bestillingen blir kansellert.

Not any of

Operatøren Not any of kontrollerer om feltet ikke tilsvarer noen av verdiene i den oppgitte listen. Verdiene som skal kontrolleres må angis enkeltvis, og etterfølges av Enter-tasten (på samme måte som tagger). I det følgende eksempelet hentes verdien for order.lineitem.product.title fra butikkens data, og sammenlignes med det andre settet med verdier: ananas, guava, kiwi.

Et eksempel på en arbeidsflyt som bruker den logiske ingen av-operatøren for å kansellere en bestilling hvis de hentede opplysningene ikke inneholder ananas, guava eller kiwi

Hvis verdien som hentes fra butikken er bringebær, er betingelsen sann fordi bringebær ikke er en del av matrisen ananas, guava, kiwi. Bestillingen blir kansellert.

Inkluderer

Includes sammenligner verdier for å se om noe av inndataene i den første verdien inneholder dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitem.product.title fra butikkdataene, og sammenlignes med den andre verdien, scrape.

Eksempel på en arbeidsflyt som bruker den logiske operatøren inkluderer til å kansellere en bestilling hvis de hentede dataene inkluderer strengens forvelgelse

Hvis verdien som hentes fra butikken er skyscraper, er betingelsen sann, fordi den nøyaktige strengen scrape er inkludert i strengen skyscraper. Bestillingen blir kansellert.

Inkluderer ikke

Does not include sammenligner verdier for å se om noen av inndataene i den første verdien ikke inneholder dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitem.product.title fra butikkdataene, og sammenlignes med den andre verdien, scrape.

Et eksempel på en arbeidsflyt som bruker den logiske inneholder ikke-operatøren for å kansellere en bestilling hvis de hentede opplysningene ikke inneholder strengen scrape

Hvis verdien som hentes fra butikken er skrapmetall, er betingelsen sann fordi den nøyaktige strengen «skrape» ikke er en del av strengen «skrapmetall». Bestillingen blir kansellert.

Begynner med

Starts with sammenligner verdier for å se om den første verdien starter med dataene i den andre verdien. I følgende eksempel hentes verdien order.shippingAddress.country fra butikkdataene, og sammenlignes med den andre verdien, United.

Eksempel på en arbeidsflyt som bruker den logiske operatøren starter med for å kansellere en bestilling hvis de hentede dataene starter med strengen United

Hvis verdien som hentes fra butikken er United Kingdom, er betingelsen sann, fordi strengen United er begynnelsen på strengen United Kingdom. Bestillingen blir kansellert.

Begynner ikke med

Does not start with sammenligner verdier for å se om den første verdien ikke starter med dataene i den andre verdien. I følgende eksempel hentes verdien order.shippingAddress.country fra butikkdataene, og sammenlignes med den andre verdien, United.

Et eksempel på en arbeidsflyt som bruker den logiske begynner ikke med-operatøren for å kansellere en bestilling hvis de hentede opplysningene ikke begynner med strengen United

Hvis verdien som hentes fra butikken er Canada, er betingelsen sann, fordi strengen Canada ikke er begynnelsen på strengen United Kingdom. Bestillingen blir kansellert.

Slutter med

Ends with sammenligner verdier for å se om den første verdien slutter med dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitems.product.title fra butikkdataene, og sammenlignes med den andre verdien, last-available.

Et eksempel på en arbeidsflyt som bruker den logiske slutter med-operatøren for å kansellere en bestilling hvis de hentede opplysningene slutter med strengen last-available

Hvis verdien som hentes fra butikken er gymsokker siste-tilgjengelige, er betingelsen sann fordi strengen gymsokker siste-tilgjengelige slutter med strengen siste-tilgjengelige. Bestillingen blir kansellert.

Slutter ikke med

Does not end with sammenligner verdier for å se om den første verdien ikke slutter med dataene i den andre verdien. I følgende eksempel hentes verdien order.lineitems.product.title fra butikkdataene, og sammenlignes med den andre verdien, last-available.

Eksempel på en arbeidsflyt som bruker den logiske operatøren slutter ikke med for å kansellere en bestilling hvis de hentede dataene ikke slutter med strengen last-available

Hvis verdien som hentes fra butikken er athletic socks new, er betingelsen sann fordi strengen athletic socks new ikke slutter med strengen last-available. Bestillingen blir kansellert.

Null- eller tomme operatører

Tom eller eksisterer ikke

Noen av feltene i dataene kan være tomme. order.cancelReason vil for eksempel returnere null hvis en bestilling ikke er kansellert. Bruk tom eller eksisterer ikke hvis du ønsker å returnere true når et felt er tomt, eller null og false hvis det finnes.

Ikke tom og eksisterer

Noen av feltene i dataene kan være tomme. order.cancelReason vil for eksempel returnere null hvis en bestilling ikke er kansellert. Bruk Ikke tom og eksisterer hvis du ønsker å returnere true når et felt ikke er tomt, og false når det er tomt.

Listeoperatører

Listeoperatører kombineres med operatører på feltnivå for å tillate kontroll av betingelser på data i lister.

Som i eksempelet «at least one», kan du ha behov for å kontrollere om en bestilling inneholder et bestemt produkt (som finnes i order.lineItems) med en bestemt tagg (en liste under order.lineItems.product.tags). I begge tilfeller bruker eksempelet listeoperatøren at least one of.

Flow inneholder tre operatører for å jobbe med lister: At least one of, None of og All of.

At least one of

De fleste betingelse med lister vil bruke At least one of. Denne operatøren returnerer true hvis noen av elementene i listen samsvarer med betingelsen. Hvis du for eksempel ønsker å kontrollere om en bestilling inneholder et produkt med en bestemt tagg, bruker du At least one of. Når listen er tom, eller når betingelsen ikke er oppfylt, returnerer betingelsen false.

Ingen av

I noen tilfeller kan du ha behov for å kontrollere om en liste ikke inneholder et element. Den beste måten å bygge denne betingelsen på, er å endre listeoperatøren til None of. Denne operatøren returnerer true hvis ingen av elementene i listen samsvarer med betingelsen. Og viktigst, hvis listen er tom, returneres også true. Du bruker for eksempel None of product tags is equal to presale hvis du ønsker å kontrollere om et produkt ikke inneholder taggen presale.

Alle av

I begrensede tilfeller kan du ha behov for å kontrollere om alle elementene i en liste samsvarer med en betingelse. Det kan for eksempel hende du ønsker å kontrollere om alle varer i en bestilling har en bestemt produktleverandør, med navnet Acme. For dette bruker du All of order line items have a product.vendor equal to Acme.

Sortere betingelser

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

Kombinere flere kriterier til én betingelse

Når du bygger en betingelse, kan du angi flere kriterier. Du kan velge hvordan disse separate kriteriene skal kombineres.

Hvis alle betingelser er oppfylt

Hvis du velger Hvis alle betingelser er oppfylt, fører det bare til svaret Sann dersom alle kriterier du har angitt er oppfylt. Dette blir som en AND-erklæring i programmering.

Du oppretter for eksempel en arbeidsflyt som tagger kunder som er lokalisert i Canada og bruker mer enn 500 USD på en enkeltbestilling.

Et eksempel på en arbeidsflyt som bruker og-betingelsen

Arbeidsflyten tagger bare kunden hvis kunden er lokalisert i Canada, og bruker mer enn 500 USD i bestillingen. Hvis én av disse betingelsene ikke er oppfylt, tagges heller ikke kunden.

Hvis noen av betingelsene er oppfylt

Hvis du velger Hvis noen av betingelsene er oppfylt, fører det til en sann respons hvis noen av betingelsene du angir er sanne. Dette blir som en OR-erklæring i programmering.

Du oppretter for eksempel en arbeidsflyt for å tagge bestillinger som vurderes som høy eller middels risiko.

Eksempel på en arbeidsflyt som bruker betingelsen eller

Arbeidsflyten tagger bestillingen hvis den er enten høy eller medium risiko. Så lenge en av disse betingelsene er sanne, blir bestillingen tagget.

Kombinere betingelser og handlinger

Du kan kombinere betingelser for å skape én stor betingelse. Når betingelser kombineres må alle betingelsene være oppfylt for at hele betingelsen skal være sann. Hvis noen av betingelsene ikke er oppfylt, er hele betingelsen usann. I følgende eksempelet må kunden godta markedsføringsmateriell, og totalprisen for bestillingen må være større enn en gitt terskel.

Et eksempel på en arbeidsflyt som sjekker en kundes totalforbruk og legger til tagger

På samme måte kan du kombinere handlinger slik at du kan kjøre flere handlinger samtidig. Dette eksemplet bruker flere betingelser for å sjekke om en kunde er kvalifisert for et lojalitetsprogram basert på det totale beløpet de har brukt i butikken. I eksempelet ovenfor kontrolleres følgende betingelser i rekkefølgen de vises:

  1. Hvis totalsummen er større enn 1000 USD og kunden godtar markedsføring, gir du dem Gold-taggen.
  2. Hvis totalbeløpet er under 1000 USD, men mer enn 500 USD og kunden godtar markedsføring, gir du dem Silver-taggen.
  3. Hvis kunden har brukt mer enn 200 USD og godtar markedsføring, gir du dem Bronze-taggen.

Statiske og dynamiske data i betingelser

Den andre verdien i en betingelse er vanligvis en statisk, manuelt angitt verdi (som for eksempel product.title == "your title"). Denne verdien forblir den samme hver gang arbeidsflyten kjører.

Du kan også bruke dynamiske verdier hvis feltet for den andre verdien viser et </>-symbol. Dynamiske verdier kommer fra butikkdataene dine hver gang arbeidsflyten kjører. For å bruke en dynamisk verdi klikker du </>, og velger verdien du vil sjekke mot. Dynamiske verdier er ikke tilgjengelig for alle felt.

Du oppretter for eksempel en arbeidsflyt som tagger en bestilling dersom landet i bestillingens fakturaadresse samsvarer med landet i leveringsadressen.

Eksempel på en arbeidsflyt som tagger en bestilling med RHS-data for å sjekke at en kundes fakturerings- og leveringsland er det samme.

I dette eksempelet trekkes både den første og den andre verdien fra butikkens data, i stedet for å manuelt spesifisere en statisk streng som skal sjekkes mot den andre verdien. Hvis landet i fakturaadressen som er oppgitt av kunden er det samme som landet kunden har oppgitt i leveringsadressen, er betingelsen sann og bestillingen blir tagget.

Av og til kan det hende du må bruke dynamiske data av feil type. Det kan for eksempel hende du må sammenligne et tall som er lagret som en streng med et annet tall. I dette tilfellet kan du bruke alternativet Kjør kode for å konvertere dataene til riktig type.

Er du klar til å begynne å selge med Shopify?

Prøv det gratis