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.
| Felt | Beskrivelse |
|---|---|
| Input | Krævet. En GraphQL-forespørgsel til at bruge data fra tidligere trin som input til handlingen Kør kode. |
| Output | Krævet. En repræsentation af de data, der skal returneres af handlingen, defineret i GraphQL's skemadefinitionssprog (SDL). |
| Kode | Kræ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.
scheduledAtellercreatedAt, 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.
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