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
Felt
Handlingen Kjør kode inneholder følgende felt.
| Felt | Beskrivelse |
|---|---|
| Inndata | Obligatorisk. En GraphQL-spørring for å bruke data fra tidligere trinn som inndata i 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 handlingen Kjør kode skal kjøre. |
Inndata
Inndata kan sendes fra trinn som skjer før handlingen Kjør kode. For å inkludere disse dataene kan du skrive en GraphQL-spørring i Inndata-feltet. Dataene som returneres fra spørringen, blir tilgjengelige som input-argumentet til funksjonen som er merket med export default, og som vanligvis kalles main.
Inndataspørringen er en spørring etter Flow-miljødata, ikke en spørring til Shopify Admin API. Derfor kan du ikke sette inn en Shopify-spørring i inndataene. I tillegg håndterer Flow edges og nodes i spørringen, så du trenger ikke å legge til disse eller annen pagineringssyntaks i spørringen.
Et eksempel på inndata som henter et bestillingsnotat 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
}Metafelt
For å få tilgang til enkeltstående metafeltverdier i Kjør kode må du først legge til metafeltet i Flows miljødata. Dette kan gjøres i en hvilken som helst handling eller tilstand, bortsett fra Kjør kode. Du kan for eksempel legge til en Logg utdata-handling og deretter følge instruksjonene for å legge til metafeltet.
Når et metafelt er lagt til i arbeidsflytmiljøet, kan du få tilgang til det i Kjør kode. Anta for eksempel at du la til et bestillingsmetafelt med aliasnavnet giftMessage. Du kan da få tilgang til det i inndataspørringen:
{
order {
giftMessage {
value
}
}
}Utdata
Handlingen Kjør kode kan returnere tilpassede data. For å definere datatypen som koden returnerer, kan du bruke Utdata-feltet og GraphQLs skjemadefinisjonsspråk (SDL). Støttede utdatatyper er String, Int, Float, Boolean og ID, som følger SDL-spesifikasjonen for hvordan man angir obligatoriske felt, lister og tilpassede 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!
}Kommentarene er valgfrie, men vil bli brukt til å beskrive dataene i Flow-brukergrensesnittet. For å få disse dataene som utdata i JavaScript-koden, returnerer du et objekt som samsvarer med typen:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Du kan også definere en tilpasset type for å returnere mer komplekse data. For eksempel, for å returnere en type kalt Gift som inneholder en streng kalt message og et tall kalt 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 å få tilgang til disse dataene i trinn som følger etter denne handlingen, kan du bruke variabelen kalt Kjør kode, som vil bli typet i henhold til Utdata-skjemaet du definerer i konfigurasjonen for handlingen Kjør kode. Du kan bruke denne variabelen i både betingelser og handlinger.
Console.log
Du kan bruke console.log til å sende utdata til kjøreloggen for arbeidsflyten i Flow for feilsøkingsformål. Utdataene vil være synlige i kjøreloggen for arbeidsflyten. For eksempel er følgende 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 for kodehandlingen finner du i eksempel-repositoriet for Flow.
Begrensninger
Handlingen Kjør kode har følgende begrensninger:
- Handlingen Kjør kode støtter ECMA2020 JavaScript. Den støtter ikke API-ene for NodeJS eller CommonJS, eller import av moduler.
- Koden kan ikke utføre HTTP-kall (
fetch). - Tilfeldige og klokkebaserte funksjoner kan ikke brukes. Datodata, som for eksempel
scheduledAtellercreatedAt, kan sendes inn som inndata. - Console.log logger ikke til nettleserkonsollen.
- For å spare på nyttlaststørrelsen, returnerer nyttlasten med utdata bare variabler som brukes i påfølgende trinn.
- Du kan ikke legge til et metafeltalias direkte i handlingen Kjør kode. For å oppnå dette kan du se gjennom Metafelter-delen på denne siden.
I tillegg gjelder følgende begrensninger:
- Spørring for inndata er begrenset til 5000 tegn.
- Skjema for utdata er begrenset til 5000 tegn.
- Nyttlast for utdata og Console.log-utdata er begrenset til en samlet størrelse på 50 KB.
- Koden kan ikke være lengre enn 50 000 tegn.
- Total kjøretid er begrenset til 5 sekunder.
- Minnebruk er begrenset til 10 MB.
Maler
Legg til gratisvare (med 100 % rabatt) i nye bestillinger
Denne malen legger til en gratis, rabattert vare i nye bestillinger når varen er på lager. Den sjekker lagerbeholdningen, bruker en rabatt på 100 % og oppdaterer bestillingen uten å varsle kunden. Denne arbeidsflyten kan bidra til å legge til automasjon for følgende scenarioer:
- Øk kundetilfredsheten ved å legge ved en gratis overraskelsesvare i bestillingen.
- Markedsfør nye eller mindre kjente produkter ved å legge dem til som gratis vareprøver i bestillinger.
- Effektiviser kampanjer ved å automatisere inkludering og rabattering av gratisvarer.
Kanseller inaktive returer
Kanseller automatisk en retur som ikke er refundert eller lagt tilbake på lager innen en viss tidsperiode. Vis mal
Konverter tagger med et prefiks til et produktmetafelt ved hjelp av Kjør kode-handlingen
Denne arbeidsflyten tar tagger som starter med et prefiks, for eksempel «color:», og legger dem til i en produktmetafeltliste. Den bruker Kjør kode-handlingen til å analysere taggene og eksisterende elementer 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 samme produkt. Vis mal
Send varsel når en bestilling inneholder en pakke
Denne arbeidsflyten starter når en bestilling opprettes og sjekker om noen av produktene i bestillingen ble kjøpt som del av en pakke. Hvis det blir funnet, sendes en intern e-post med pakkedetaljene. I tillegg kan du bruke denne arbeidsflyten som et utgangspunkt for ethvert bruksområde som krever at man oppdager en pakke i en bestilling. Vis mal
Tagg bestillinger med tilknyttet UTM-kampanje
Legger til tagger i bestillinger som inneholder navnene på eventuelle tilknyttede UTM-kampanjer. Vis mal