Kjør kode

Handlingen Kjør kode kjører Javascript. Du kan sende data fra tidligere trinn i arbeidsflyten som inndata til handlingen Kjør kode, og returnere verdier som kan brukes i påfølgende trinn.

Felter

Handlingen Kjør kode inneholder følgende felter.

Felter som brukes i handlingen Kjør kode.
FeltBeskrivelse
OvertreObligatorisk. En GraphQL-spørring for å bruke data fra tidligere trinn som inndata til handlingen Kjør kode.
UtdataObligatorisk. En representasjon av dataene som skal returneres av handlingen, definert i GraphQLs skjemadefinisjonsspråk (SDL).
KodeObligatorisk. JavaScript-koden som skal kjøres av handlingen Kjør kode.

Inndata

Inndata kan sendes fra trinn som skjer før handlingen Kjør kode kjøres. For å inkludere disse dataene, kan du skrive en GraphQL-spørring i feltet Inndata. Dataene som returneres fra spørringen er tilgjengelige som input-argumentet til funksjonen merket med export default, etter konvensjonen kalt main.

Inndataspørringen er en spørring for Flow-miljødata, ikke en spørring til Shopify Admin API. Du kan derfor ikke sette inn en Shopify-spørring i inndataene. Flow håndterer i tillegg edges og nodes i spørringen, så du trenger ikke legge til disse eller annen sidesyntaks i spørringen.

Et eksempel på inndata som henter en bestillingsmerknad og tittelen på en varelinje:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Disse dataene konverteres til en input-variabel, som kan brukes i koden:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

Inndata kan også destruktureres i funksjonssignaturen:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

Metafelter

For å få tilgang til enkle metafeltverdier i Kjør kode må du først legge til metafeltet i Flow-miljødataene. Dette gjøres i en hvilken som helst handling eller tilstand annet enn Kjør kode. Du kan for eksempel legge til en Logg utdata-handling og følge instruksjonene for å legge til metafeltet.

Etter at et metafelt er lagt til i arbeidsflytmiljøet, får du tilgang til det i Kjør kode. La oss for eksempel si at du har lagt til et Bestilling-metafelt med aliasnavnet giftMessage. Deretter får du tilgang til den i inndataspørringen:

{
  order {
    giftMessage {
      value
    }
  }
}

Utdata

Handlingen Kjør kode kan returnere egendefinerte data. For å definere hvilken type data koden skal returnere kan du bruke feltet Resultat og GraphQLs skjemadefinisjonsspråk (SDL). Støttede utdatatyper er String, Int, Float, Boolean og ID, som følger SDL-spesifikasjonen for spesifikasjon av nødvendige felter, lister og egendefinerte data.

For eksempel, for å returnere en streng med navnet giftMessage og et tall med navnet totalGifts:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

Kommentarer er valgfrie, men brukes til å beskrive dataene i Flows brukergrensesnitt. For å returnere disse dataene i JavaScript-koden, må du returnere et objekt som samsvarer med typen:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Du kan også definere en egendefinert type for å returnere mer komplekse data. For eksempel, for å returnere en type med navnet Gift, som inneholder en streng med navnet message og et tall med navnet amount:

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

For å bruke disse dataene i trinn som følger denne handlingen, kan du bruke variabelen Kjør kode, som skrives i henhold til Output-skjemaet du definerer i konfigurasjonen av handlingen Kjør kode. Du kan bruke denne variabelen i både betingelser og handlinger.

Console.log

Du kan bruke console.log for å sende data til Flows arbeidsflytlogg for feilsøking. Utdataene vil synes i arbeidsflytens kjørelogg. Følgende er for eksempel gyldige:

export default function main(input) {
  console.log('Hello, world!');
  //Hello, world!
  console.log(input);
  // { order: { note: 'Hello', lineItems: [{ title: 'World' }] } }
  console.log(input.order, 'is the order');
  // { note: 'Hello', lineItems: [{ title: 'World' }] }
  // is the order

  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Du kan ikke bruke console.info, console.error eller andre funksjoner i handlingen Kjør kode.

Eksempel:

Eksempler på kodehandlingen finner du i Flows eksempelrepositorium.

Begrensninger

Handlingen Kjør kode har følgende begrensninger:

  • Handlingen Kjør kode støtter ECMA2020 JavaScript. Den støtter ikke API-ene NodeJS eller CommonJS, eller import av moduler.
  • Koden din kan ikke kjøre http-anrop (fetch).
  • Tilfeldige og klokkebaserte funksjoner kan ikke brukes. Datoopplysninger, som scheduledAt eller createdAt, kan sendes som inndata.
  • Console.log logger ikke til nettleserkonsollen.
  • Du kan ikke legge til metafeltalias direkte i Kjør kode-handlingen. Vis metafelt-delen for hvordan du gjør dette.

I tillegg håndheves følgende begrensninger:

  • Inndataspørringen er begrenset til 5000 tegn.
  • Utdataskjema er begrenset til 5000 tegn.
  • Nyttelast i utdata og utdata fra Console.log er begrenset til 50 kb sammenlagt.
  • Koden kan ikke være lenger enn 50 000 tegn.
  • Total varighet for kjøring er begrenset til 5 sekunder.
  • Minnebruken er begrenset til 10 MB.

Veikart

Flow-teamet planlegger å tilføre funksjoner i handlingen Kjør kode over tid. Tabellen nedenfor oppsummerer planlagte forbedringer, og deres estimerte leveringsdatoer.

Veikart for forbedringer av handlingen Kjør kode
ForbedringBeskrivelseEstimert leveranse
LoggingBruk «console.log» til å sende utdata til kjøreloggen for feilsøkingsformål.Ferdig.
Eksterne API-anropBruk JavaScripts fetch til å anrope API-er.Kvartal 1 2025

Maler

Legg til en gratis (100 % rabatt) vare i nye bestillinger

Denne malen legger til en gratis, rabattert vare i nye bestillinger hvis varen er på lager. Den sjekker lagerbeholdningen, benytter 100 % rabatt og oppdaterer bestillingen uten å varsle kunden. Denne automasjonen kan være nyttig for å (1) gi bedre kundetilfredshet ved å inkludere en gratis overraskelsesvare i bestillingen, (2) promotere nye eller mindre kjente produkter ved å legge dem til som gratisprøver i bestillinger, eller (3) for å forenkle kampanjer ved å automatisere inkluderingen og rabatteringen av gratisvarer. Vis mal

Kanseller inaktive returer

Automatisk kanseller en retur som ikke er blitt refundert eller tilbakeført til lager innen en viss tid. Vis mal

Konverter tagger med en prefiks til et produktmetafelt med Kjør kode-handlingen

Denne arbeidsflyten henter tagger som starter med en prefiks, for eksempel «color:», og legger dem til i en produktmetafeltliste. Den bruker Kjør kode-handlingen for å analysere taggene og de eksisterende varene i metafeltlisten. Arbeidsflyten kjøres når et produkt opprettes, men kan kjøres manuelt på eksisterende produkter. Vis mal

Send varsel når en kunde bestiller flere varianter av et produkt

Motta et e-postvarsel når en kunde bestiller flere varianter av det samme produktet. Vis mal

Send varsel når bestillingen inneholder en pakke

Denne arbeidsflyten starter når en bestilling opprettes, og sjekker om noen av produktene i bestillingen ble kjøpt som en del av en pakke. Hvis det finnes, blir sendt en intern e-post med pakkedetaljene. I tillegg kan du bruke denne arbeidsflyten som et utgangspunkt for alle brukstilfelle som må oppdage tilstedeværelsen av en pakke i en bestilling. Vis mal

Merk bestillinger med tilknyttet UTM-kampanje

Legger til tagger i bestillinger som inneholder navnene på eventuelle tilknyttede UTM-kampanjer. Vis mal

Finner du ikke svarene du leter etter? Vi er her for å hjelpe deg.