Kør kode

Handlingen Kør kode udfører JavaScript. Du kan videresende data fra tidligere trin i din workflow som input til handlingen Kør kode og returnere værdier, der kan bruges i efterfølgende trin.

Felter

Handlingen Kør kode indeholder følgende felter.

Felter, der bruges i handlingen 'Kør kode'.
FeltBeskrivelse
InputKrævet. En GraphQL-forespørgsel til at bruge data fra tidligere trin som input til handlingen Kør kode.
OutputKrævet. En repræsentation af de data, der skal returneres af handlingen, defineret i GraphQL's skemadefinitionssprog (SDL).
KodeKrævet. Den JavaScript, som handlingen Kør kode udfører.

Inputdata

Inputdata kan overføres fra trin, der finder sted før 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 til den funktion, der er markeret med export default, og som konventionelt kaldes main.

Inputforespørgslen er en forespørgsel efter Flow-miljødata, ikke en forespørgsel til Shopify Admin API. Derfor kan du ikke indsætte en Shopify-forespørgsel i inputdataene. Derudover håndterer Flow edges og nodes i forespørgslen, så du behøver ikke at tilføje dem eller anden sideinddelingssyntaks til din forespørgsel.

Et eksempel på et input, der henter en ordrenote og titlen på en enkelt post:

{
  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 enkelte metafeltværdier i Kør kode, skal du først føje metafeltet til Flows miljødata. Dette kan gøres i en hvilken som helst handling eller betingelse ud over Kør kode. Du kan f.eks. tilføje handlingen Logfør output og derefter følge vejledningen for at tilføje metafeltet.

Når et metafelt er føjet til workflowmiljøet, kan du få adgang til det i Kør kode. Antag f.eks., at du har tilføjet et metafelt for en 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. Du kan definere datatypen, som koden returnerer, ved at bruge feltet Output og GraphQLs Schema definition language (SDL). Understøttede outputtyper er String, Int, Float, Boolean og ID, som følger SDL-specifikationen for, hvordan du angiver påkrævede felter, lister og tilpassede data.

Hvis du f.eks. vil returnere en streng, der hedder giftMessage, og et tal, der hedder 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 outputte 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, der hedder Gift, og som indeholder en streng, der hedder message, og et tal, der hedder 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 have adgang til disse data i trin, der følger efter denne handling, skal du bruge variablen Kør kode, som typificeres i henhold til det Output-skema, du definerer i konfigurationen af handlingen Kør kode. Du kan bruge denne variabel i både betingelser og handlinger.

Console.log

Du kan bruge console.log til at outputte data til kørselsloggen for et workflow i Flow til fejlfinding. Outputtet kan ses i workflowets kørselslog. 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

Eksempler på kodehandlingen kan findes i Flow examples repository.

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'er eller import af moduler.
  • Koden kan ikke foretage HTTP-kald (fetch).
  • Tilfældige og tidsbaserede funktioner kan ikke bruges. Datodata, som f.eks. scheduledAt eller createdAt, kan overføres som input.
  • Console.log logger ikke til browserkonsollen.
  • For at spare på payload-størrelsen returnerer payloaden for outputdata kun variabler, der anvendes i efterfølgende trin.
  • Du kan ikke tilføje et metafeltalias direkte i handlingen Kør kode. Hvis du vil gøre dette, skal du se afsnittet Metafelter på denne side.

Derudover gælder følgende begrænsninger:

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

Skabeloner

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

Denne skabelon tilføjer en gratis vare med rabat til nye ordrer, når varen er på lager. Den tjekker lagerbeholdningen, anvender en rabat på 100 % og opdaterer ordren uden at give kunden besked. Dette workflow kan hjælpe med at tilføje automatisering til følgende scenarier:

  • Øg kundetilfredsheden ved at inkludere en gratis overraskelsesvare i deres ordre.
  • Promover nye eller mindre kendte produkter ved at tilføje dem som gratis vareprøver i ordrer.
  • Strømlin kampagner ved at automatisere inkludering af og rabat på gratis varer.

Se skabelon

Annuller inaktive returneringer

Annuller automatisk en returnering, der ikke er blevet refunderet eller genopfyldt på lageret inden for en bestemt periode. Se skabelon

Konverter tags med et præfiks til et produktmetafelt ved hjælp af handlingen Kør kode

Dette workflow tager tags, der starter med et præfiks som f.eks. 'color:', og føjer dem til en liste i et produktmetafelt. Det bruger handlingen Kør kode til at parse tagsene og de eksisterende elementer på metafeltlisten. Workflowet kører, når et produkt oprettes, men det kan også køres manuelt på eksisterende produkter. Se skabelon

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

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

Send en notifikation, når en ordre indeholder en sampak

Dette workflow starter, når der oprettes en ordre, og tjekker, om nogen af produkterne i ordren er købt som en del af en sampak. Hvis det er tilfældet, sendes der en intern mail med oplysninger om sampakken. Derudover kan du bruge dette workflow som udgangspunkt for alle use cases, hvor det er nødvendigt at registrere en sampak i en ordre. Se skabelon

Føj tags til ordrer med tilknyttet UTM-kampagne

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