Kör kod
Åtgärden Kör kod exekverar JavaScript. Du kan skicka data från föregående steg i arbetsflödet som indata till åtgärden Kör kod och returnera värden som ska användas i efterföljande steg.
På den här sidan
Fält
Åtgärden Kör kod innehåller följande fält.
| Fält | Beskrivning |
|---|---|
| Indata | Krävs. En GraphQL-förfrågan för att använda data från föregående steg som indata till åtgärden Kör kod. |
| Utdata | Krävs. En representation av de data som ska returneras av åtgärden, definierad i GraphQL:s schemadefinitionsspråk (SDL). |
| Kod | Krävs. Den JavaScript som åtgärden Kör kod kommer att exekvera. |
Indata
Indata kan skickas från steg som inträffar före åtgärden Kör kod. Om du vill inkludera dessa data kan du skriva en GraphQL-förfrågan i fältet Indata. De data som returneras från förfrågan kommer att vara tillgängliga som indata-argument för den funktion som är märkt med export default, som enligt konvention kallas main.
Indataförfrågan är en förfrågan om Flow-miljödata, inte en förfrågan till Shopify Admin API. Därför kan du inte infoga en Shopify-förfrågan i indata. Flow hanterar dessutom edges och nodes i förfrågan, så du behöver inte lägga till dem eller annan sidnumreringssyntax i din förfrågan.
Ett exempel på indata som hämtar en orderanteckning och titeln på en radartikel:
{
order {
note
lineItems {
title
}
}
}Dessa data konverteras till en indata-variabel som kan användas i koden:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Indata kan även destruktureras i funktionssignaturen:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metafält
För att komma åt enskilda metafältsvärden i Kör kod måste du först lägga till metafältet i Flows miljödata. Detta kan göras i valfri åtgärd eller valfritt villkor förutom Kör kod. Du kan till exempel lägga till en åtgärd för Loggutdata och sedan följa anvisningarna för att lägga till metafältet.
När ett metafält har lagts till i arbetsflödets miljö kan du komma åt det i Kör kod. Anta till exempel att du har lagt till ett ordermetafält med aliasnamnet giftMessage. Du kan sedan komma åt det i din indataförfrågan:
{
order {
giftMessage {
value
}
}
}Utdata
Åtgärden Kör kod kan returnera anpassade data. Använd fältet Utdata och GraphQL:s Schema Definition Language (SDL) för att definiera typen av data som koden ska returnera. Utdatatyper som stöds är String, Int, Float, Boolean och ID, som följer SDL-specifikationen för hur du anger obligatoriska fält, listor och anpassade data.
Om du till exempel vill returnera en sträng som heter giftMessage och ett nummer som heter totalGifts:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}Kommentarerna är valfria, men kommer att användas för att beskriva data i Flow-gränssnittet. Returnera ett objekt som matchar typen för att mata ut dessa data i JavaScript-koden:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Du kan även definiera en anpassad typ för att returnera mer komplexa data. Om du till exempel vill returnera en typ som heter Gift som innehåller en sträng som heter message och ett nummer som heter 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!
}Använd variabeln med namnet Kör kod för att komma åt dessa data i steg som följer efter den här åtgärden. Den kommer att skrivas enligt det Utdata-schema som du definierar i konfigurationen för åtgärden Kör kod. Du kan använda den här variabeln i både villkor och åtgärder.
Console.log
Du kan använda console.log för att mata ut data till Flows körningslogg för arbetsflöden i felsökningssyfte. Utdata kommer att synas i körningsloggen för arbetsflödet. Följande är till exempel giltiga:
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 inte använda console.info, console.error eller andra funktioner i åtgärden Kör kod.
Exempel
Exempel för kodåtgärden finns i Flow-exempellagringsplatsen.
Begränsningar
Åtgärden Kör kod har följande begränsningar:
- Åtgärden Kör kod har stöd för ECMA2020 JavaScript. Den har inte stöd för NodeJS- eller CommonJS-API:er, eller för att importera moduler.
- Din kod kan inte göra HTTP-anrop (
fetch). - Slumpmässiga och klockbaserade funktioner kan inte användas. Datumdata, som
scheduledAtellercreatedAt, kan skickas in som indata. - Console.log loggar inte till webbläsarkonsolen.
- För att spara på nyttolaststorleken returnerar nyttolasten för utdata endast variabler som används i efterföljande steg.
- Du kan inte lägga till ett metafältalias direkt i åtgärden Kör kod. Granska avsnittet Metafält på den här sidan för att göra det.
Dessutom gäller följande gränser:
- Indatafrågan är begränsad till 5 000 tecken.
- Utdataschemat är begränsat till 5 000 tecken.
- Nyttolasten för utdata och Console.log-utdata är begränsade till sammanlagt 50 KB.
- Koden får inte vara längre än 50 000 tecken.
- Total körningstid är begränsad till 5 sekunder.
- Minnesanvändningen är begränsad till 10 MB.
Mallar
Lägg till gratisartikel (rabatterad 100 %) i nya ordrar
Denna mall lägger till en kostnadsfri, rabatterad artikel i nya ordrar när artikeln finns i lager. Den kontrollerar lagersaldot, tillämpar 100 % rabatt och uppdaterar ordern utan att meddela kunden. Detta arbetsflöde kan hjälpa till att lägga till automatisering i följande scenarier:
- Förbättra kundnöjdheten genom att inkludera en kostnadsfri överraskningsartikel i deras order.
- Marknadsför nya eller mindre kända produkter genom att lägga till dem som gratisprover i ordrar.
- Effektivisera kampanjer genom att automatisera inkludering och rabattering av gratisartiklar.
Avbryt inaktiva returer
Avbryt automatiskt en retur som inte har återbetalats eller återlagts i lager inom en viss tidsperiod. Visa mall
Konvertera taggar med ett prefix till ett produktmetafält med hjälp av åtgärden Kör kod
Detta arbetsflöde tar taggar som börjar med ett prefix, såsom ”color:”, och lägger till dem i en produktmetafältlista. Det använder åtgärden Kör kod för att tolka taggarna och befintliga artiklar i metafältlistan. Arbetsflödet körs när en produkt skapas, men kan köras manuellt på befintliga produkter. Visa mall
Skicka avisering när en kund beställer flera varianter av en produkt
Ta emot ett e-postmeddelande när en kund beställer flera varianter av samma produkt. Visa mall
Skicka avisering när en order innehåller ett paket
Detta arbetsflöde börjar när en order skapas och kontrollerar om någon av produkterna i ordern köptes som en del av ett paket. Om ett paket hittas skickas ett internt e-postmeddelande med paketinformation. Dessutom kan du använda det här arbetsflödet som en utgångspunkt för alla användningsfall som behöver upptäcka förekomsten av ett paket i en order. Visa mall
Tagga ordrar med tillhörande UTM-kampanj
Lägger till taggar i ordrar som innehåller namnen på eventuella tillhörande UTM-kampanjer. Visa mall