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.
På denne siden
Felter
Handlingen Kjør kode inneholder følgende felter.
Felt | Beskrivelse |
---|---|
Overtre | Obligatorisk. En GraphQL-spørring for å bruke data fra tidligere trinn som inndata til handlingen Kjør kode. |
Utdata | Obligatorisk. En representasjon av dataene som skal returneres av handlingen, definert i GraphQLs skjemadefinisjonsspråk (SDL). |
Kode | Obligatorisk. 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
}
Utdata
Handlingen Kjør kode kan returnere egendefinerte data. For å definere typen data koden skal returnere, kan du bruke feltet Utdata og GraphQLs Skjemadefinisjonsspråk (SDL). 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:
- Koden din kan ikke importere moduler.
- Koden din kan ikke kjøre http-anrop (
fetch
). - Tilfeldige og klokkebaserte funksjoner kan ikke brukes. Datoopplysninger, som
scheduledAt
ellercreatedAt
, kan sendes som inndata. - Console.log logger ikke til nettleserkonsollen.
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.
Forbedring | Beskrivelse | Estimert leveranse |
---|---|---|
Logging | Bruk «console.log» til å sende utdata til kjøreloggen for feilsøkingsformål. | Ferdig. |
Eksterne API-anrop | Bruk JavaScripts fetch til å anrope API-er. | Q3 2024 |
Tilbakemeldinger
Handlingen Kjør kode er en ny type trinn i Shopify Flow. Hvis du har tilbakemeldinger eller spørsmål, kan du kommentere i dette Flow-fellesskapsinnlegget.