Kør kode

Handlingen Kør kode udfører JavaScript. Du kan overføre data fra tidligere trin i workflowet som input i handlingen Kør kode, og returværdier, der skal anvendes i de efterfølgende trin.

Felter

Handlingen Kør kode indeholder følgende felter.

Felter, der bruges til handlingen Kør kode.
FeltBeskrivelse
InputPåkrævet. En GraphQL-forespørgsel om at bruge data fra tidligere trin som input i handlingen Kør kode.
OutputPåkrævet. En gengivelse af de data, der returneres af handlingen, angivet i GraphQL Schema Definition Language (SDL).
KodePåkrævet. Det JavaScript, som handlingen Kør kode vil udføre.

Inputdata

Inputdata kan overføres fra trin, der ligger inden handlingen Kør kode. Hvis du vil inkludere disse data, kan du skrive en GraphQL-forespørgsel i feltet Input. De data, der returneres fra forespørgslen, er tilgængelige som input-argumentet for funktionen, der er markeret med export default, også kaldet main.

Inputforespørgslen er en forespørgsel på Flow-miljødata, ikke en forespørgsel til Shopify Admin API’en. Det betyder, at du ikke kan indsætte en Shopify-forespørgsel i inputdataene. Flow håndterer desuden edges og nodes i forespørgslen, så du behøver ikke at føje disse eller anden sideskift-syntaks til din forespørgsel.

Eksempel på et input, der får en ordrebemærkning og titlen på en varelinje:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Disse data konverteres til en input-variabel, der kan bruges i koden:

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

Input kan også destruktureres i funktionssignaturen:

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

Metafelter

Hvis du vil have adgang til værdier for enkelt metafelt i handlingen Kør kode, skal du først tilføje metafeltet i Flows miljødata. Dette gøres i alle handlinger eller betingelser, der ikke er handlingen Kør kode. Du kan f.eks. tilføje en handling om at logge output og derefter følge vejledningen for at tilføje metafeltet.

Når et metafelt er blevet føjet til workflow-miljøet, kan du få adgang til det i handlingen Kør kode. Lad os f.eks. sige, at du har tilføjet et metafelt for ordre med aliasnavnet giftMessage. Du kan derefter få adgang til det i din inputforespørgsel:

{
  order {
    giftMessage {
      value
    }
  }
}

Outputdata

Handlingen Kør kode kan returnere tilpassede data. Hvis du vil definere den type af data, som koden returnerer, skal du bruge feltet Output og GraphQL Schema Definition Language (SDL). Understøttede outputtyper er String, Int, Float, Boolean og ID, som følger SDL-specifikationen for, hvordan de obligatoriske felter, lister og tilpassede data angives.

Hvis du f.eks. vil returnere en streng kaldet giftMessage og et tal kaldet totalGifts:

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

Kommentarerne er valgfrie, men de bruges til at beskrive dataene i Flows brugergrænseflade. Hvis du vil udlæse disse data i JavaScript-koden, skal du returnere et objekt, der matcher typen:

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

Du kan også definere en tilpasset type for at returnere mere komplekse data. Hvis du f.eks. vil returnere en type kaldet Gift, der indeholder en streng kaldet message og et tal kaldet 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!
}

Hvis du vil tilgå disse data i trinnene efter denne handling, skal du bruge en variabel kaldet Kør kode, som skrives i henhold til det Output-skema, du definerer i konfigurationen af handlingen Kør kode. Du kan både bruge denne variabel i betingelser og handlinger.

Console.log

Til fejlfindingsformål kan du bruge console.log til at outputte data til Flows kørselslog for workflows. Outputtet vil være synligt i kørselsloggen for workflowet. Følgende er f.eks. 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 bruge console.info, console.error eller andre funktioner i handlingen Kør kode.

Eksempel

Du kan finde eksempler på Kør kode-handlingen i Flow-lageret med eksempler.

Begrænsninger

Handlingen Kør kode har følgende begrænsninger:

  • Handlingen Kør kode understøtter ECMA2020 JavaScript. Den understøtter ikke NodeJS- eller CommonJS-API'erne eller import af moduler.
  • Din kode kan ikke foretage http-kald (fetch).
  • Tilfældige og klokkeslætsbaserede funktioner kan ikke anvendes. Datodata, som f.eks. scheduledAt og createdAt, kan overføres som et input.
  • Console.log logger ikke i browserkonsollen.
  • Du kan ikke tilføje metafeltalias direkte i handlingen Kør kode. Se afsnittet metafelterne for at se, hvordan du opnår dette.

Følgende begrænsninger håndhæves også:

  • Forespørgslen for inputdata er begrænset til 5.000 tegn.
  • Skemaet for outputdata er begrænset til 5.000 tegn.
  • Nytteoutputdata og output for Console.log er begrænset til 50 KB kombineret.
  • Koden må ikke være længere end 50.000 tegn.
  • Den samlede varighed for udførelse er begrænset til 5 sekunder.
  • Hukommelsesforbruget er begrænset til 10 MB.

Plan

Flow-teamet planlægger at føje flere funktioner til Kør kode-handlingen med tiden. Nedenstående tabel angiver de planlagte forbedringer og deres forventede leveringsdatoer.

Køreplan for forbedringer af Kør kode-handlingen
ForbedringBeskrivelseForventet leveringsdato
LogføringBrug `console.log` for at udlæse data til kørselsloggen for fejlfinding.Udført.
Eksterne API-kaldBrug JavaScripts fetch-kommando til at kalde API’er.K1 2025

Skabeloner

Føj en gratis vare (100 % rabat) til nye ordrer

Denne skabelon føjer en gratis vare med rabat til nye ordrer, hvis varen er på lager. Den tjekker lagerbeholdningen, pålægger en rabat på 100 % og opdaterer ordren uden at underrette kunden. Denne automatisering er nyttig til at (1) forbedre kundetilfredsheden ved at inkludere en gratis vare i deres ordre som en overraskelse, (2) promovere nye eller mindre kendte produkter ved at tilføje dem som gratis prøver i ordrerne, eller (3) strømline promoveringer ved at automatisere inkludering af – og rabat for – gratis varer. Se skabelon

Annuller inaktive returneringer

Annuller automatisk en returnering, der ikke er blevet refunderet eller genopfyldt inden for en vis periode. Se skabelon

Konverterer tags med et præfiks til et metafelt for produkter via handlingen Kør kode

Dette workflow tager tags, som starter med et præfiks, som f.eks. 'farve:' og føjer dem til en metafelt for produktliste. Det bruger handlingen Kør kode til at parse tags og eksisterende varer på metafeltlisten. Workflowet kører, når der oprettes et produkt, men det kan køres manuelt på eksisterende produkter. Se skabelon

Send en meddelelse, når en kunde bestiller flere varianter af et produkt

Modtag en mailmeddelelse, når en kunde bestiller flere varianter af det samme produkt. Se skabelon

Send meddelelse, når ordren indeholder en sampak

Dette workflow starter, når der oprettes en ordre, og kontrollerer, om nogle af produkterne i ordren er blevet købt som en del af en sampak. Hvis der findes en intern mail, sendes den med sampakoplysningerne. Du kan også bruge dette workflow som udgangspunkt for alle brugstilfælde, der skal registrere, om der findes en sampak i en ordre. Se skabelon

Tag ordrer med tilknyttet UTM-kampagne

Føjer tags til ordrer, der indeholder navnene på eventuelle tilknyttede UTM-kampagner. Se skabelon

Kan du ikke finde de svar, du leder efter? Vi er her for at hjælpe.