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:
Disse dataene konverteres til en input
-variabel, som kan brukes i koden:
Inndata kan også destruktureres i funksjonssignaturen:
Metafelter
For å få tilgang til enkle metafeltverdier i Kjør kode må du først legge til metafeltet i Flow-miljødataene. Dette gjøres i en hvilken som helst handling eller tilstand annet enn Kjør kode. Du kan for eksempel legge til en Logg utdata-handling og følge instruksjonene for å legge til metafeltet.
Etter at et metafelt er lagt til i arbeidsflytmiljøet, får du tilgang til det i Kjør kode. La oss for eksempel si at du har lagt til et Bestilling-metafelt med aliasnavnet giftMessage
. Deretter får du tilgang til den i inndataspørringen:
Utdata
Handlingen Kjør kode kan returnere egendefinerte data. For å definere hvilken type data koden skal returnere kan du bruke feltet Resultat og GraphQLs skjemadefinisjonsspråk (SDL). Støttede utdatatyper er String
, Int
, Float
, Boolean
og ID
, som følger SDL-spesifikasjonen for spesifikasjon av nødvendige felter, lister og egendefinerte data.
For eksempel, for å returnere en streng med navnet giftMessage
og et tall med navnet totalGifts
:
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:
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
:
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:
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:
- Handlingen Kjør kode støtter ECMA2020 JavaScript. Den støtter ikke API-ene NodeJS eller CommonJS, eller import av 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.
- Du kan ikke legge til metafeltalias direkte i Kjør kode-handlingen. Vis metafelt-delen for hvordan du gjør dette.
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. | Kvartal 1 2025 |
Maler
Legg til en gratis (100 % rabatt) vare i nye bestillinger
Denne malen legger til en gratis, rabattert vare i nye bestillinger hvis varen er på lager. Den sjekker lagerbeholdningen, benytter 100 % rabatt og oppdaterer bestillingen uten å varsle kunden. Denne automasjonen kan være nyttig for å (1) gi bedre kundetilfredshet ved å inkludere en gratis overraskelsesvare i bestillingen, (2) promotere nye eller mindre kjente produkter ved å legge dem til som gratisprøver i bestillinger, eller (3) for å forenkle kampanjer ved å automatisere inkluderingen og rabatteringen av gratisvarer. Vis mal
Kanseller inaktive returer
Automatisk kanseller en retur som ikke er blitt refundert eller tilbakeført til lager innen en viss tid. Vis mal
Konverter tagger med en prefiks til et produktmetafelt med Kjør kode-handlingen
Denne arbeidsflyten henter tagger som starter med en prefiks, for eksempel «color:», og legger dem til i en produktmetafeltliste. Den bruker Kjør kode-handlingen for å analysere taggene og de eksisterende varene 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 det samme produktet. Vis mal
Send varsel når bestillingen inneholder en pakke
Denne arbeidsflyten starter når en bestilling opprettes, og sjekker om noen av produktene i bestillingen ble kjøpt som en del av en pakke. Hvis det finnes, blir sendt en intern e-post med pakkedetaljene. I tillegg kan du bruke denne arbeidsflyten som et utgangspunkt for alle brukstilfelle som må oppdage tilstedeværelsen av en pakke i en bestilling. Vis mal
Merk bestillinger med tilknyttet UTM-kampanje
Legger til tagger i bestillinger som inneholder navnene på eventuelle tilknyttede UTM-kampanjer. Vis mal