Kör kod

Åtgärden Kör kod exekverar JavaScript. Du kan överföra data från tidigare steg i arbetsflödet som indata till åtgärden Kör kod och returvärden som ska användas i följande steg.

Fält

Åtgärden Kör kod innehåller följande fält.

Fält som används i åtgärden Kör kod.
FältBeskrivning
IndataKrävs. En GraphQL-fråga för att använda data från tidigare steg som indata till åtgärden Kör kod.
UtdataKrävs. En representation av de data som ska returneras av åtgärden, definierad i GraphQL:s schemadefinitionsspråk (SDL).
KodKrävs. Det JavaScript som åtgärden Kör kod kommer att exekvera.
### Indata {#input-data}

Indata kan skickas från steg som inträffar innan åtgärden Kör kod. Inkludera dessa data genom att skriva en GraphQL-fråga i fältet Indata. Data som returneras från frågan blir tillgängliga som argumentet input till den funktion som markerats med export default. Den kallas main enligt konventionen.

Inmatningsfrågan är en fråga för Flow-miljödata, inte en fråga till Shopify Admin API. Därför kan du inte infoga en Shopify-fråga i inmatningsdata. Flow hanterar också edges och nodes i frågan, så du behöver inte lägga till dessa eller annan sidnumreringssyntax i din fråga.

Exempel på indata som hämtar en orderanteckning och titeln på en post:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Data konverteras till en input-variabel som kan användas i koden:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

Indata kan också omstruktureras i funktionen signatur:

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 Flow-miljödata. Detta görs i andra åtgärder eller villkor än Kör kod. Du kan till exempel lägga till åtgärden Logga utdata och sedan följa anvisningarna för att lägga till metafältet.

När ett metafält har lagts till i arbetsflödesmiljön kan du komma åt det i Run Code. Anta till exempel att du har lagt till ett Order-metafält med aliasnamnet giftMessage. Du kan sedan komma åt det i din inmatningsfråga:

{
  order {
    giftMessage {
      value
    }
  }
}

Utdata

Åtgärden Kör kod kan returnera anpassade data. Använd fältet Utdata och GraphQL:s Schemadefinitionsspråk (SDL) för att definiera vilken typ av data som koden ska returnera. Utdatatyper som stöds är String, Int, Float, Boolean och ID som följer SDL-specificeringen för hur du anger obligatoriska fält, listor och anpassade data.

Exempelvis för att returnera en sträng som kallas giftMessage och ett nummer som kallas totalGifts:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

Kommentarerna är valfria, men kommer användas för att beskriva data i Flow-användargränssnittet. Mata ut data i JavaScript-koden genom att returnera ett objekt som matchar typen:

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. Exempelvis för att returnera en typ som kallas Gift som innehåller en sträng som kallas message och ett nummer som kallas 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!
}

Du kan komma åt data i steg som kommer efter den här åtgärden genom att använda variabeln Kör kod, som kommer att skrivas i enlighet med det Output-schema som du definierar i konfigureringen av å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 logg av arbetsflödeskörning för felsökningssyften. Utdata kommer att visas i arbetsflödets körningslogg. Följande är exempelvis 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 på åtgärden Kör kod kan hittas i Flow-exempelarkivet.

Begränsningar

Åtgärden Kör kod har följande begränsningar:

  • Åtgärden "Kör kod" stöder ECMA2020 JavaScript. Den stödjer inte NodeJS- eller CommonJS-API:er, eller att importera moduler.
  • Din kod kan inte göra http-anrop (fetch).
  • Slumpvisa och tidsbaserade funktioner kan inte användas. Datumdata, till exempel en scheduledAt eller createdAt kan föras in som indata.
  • Console.log loggar inte till webbläsarkonsolen.
  • Du kan inte lägga till metafältsalias direkt i åtgärden Kör kod. Se avsnittet Metafält för hur du gör detta.

Dessutom tillämpas följande begränsningar:

  • Indatafråga är begränsad till 5 000 tecken.
  • Utdataschema är begränsat till 5 000 tecken.
  • Nyttolast för utdata och Console.log-utdata är begränsat till sammanlagt 50 kb.
  • Koden får inte vara längre än 50 000 tecken.
  • Total körningsvaraktighet är begränsad till 5 sekunder.
  • Minnesanvändning är begränsad till 10 MB.

Mallar

Lägg till gratis (100 % rabatterad) artikel till nya order

Den här mallen lägger till en gratis, rabatterad artikel i nya ordrar om artikeln finns i lager. Den kontrollerar lager, tillämpar en rabatt på 100 % och uppdaterar ordern utan att meddela kunden. Denna automatisering kan vara användbar för att (1) öka kundnöjdheten genom att inkludera en gratis överraskningsartikel i ordern, (2) marknadsföra nya eller mindre kända produkter genom att lägga till dem som gratisprover i ordern eller (3) effektivisera kampanjer genom att automatisera inkludering och rabattering av gratisartiklar. Visa mall

Avbryt inaktiva returer

Annullera automatiskt en retur som inte har återbetalats eller skickats tillbaka till lager inom en viss tidsperiod. Visa mall

Konvertera taggar med ett prefix till ett produkt-metafält med hjälp av åtgärden Kör kod

Arbetsflödet tar taggar som börjar med ett prefix som ”färg:” och lägger till dem i en metafältlista över produkter. Den 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 en avisering när en kund beställer flera varianter av en produkt

Ta emot en e-postavisering när en kund beställer flera varianter av samma produkt. Visa mall

Skicka avisering när ordern innehåller ett paket

Arbetsflödet startar när en order skapas och kontrollerar om någon av produkterna i ordern köptes som en del av ett paket. Om så är fallet skickas ett internt e-postmeddelande med information om paketet. Du kan även använda det här arbetsflödet som 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 för ordrar som innehåller namnen på alla tillhörande UTM-kampanjer. Visa mall

Hittar du inte de svar du letar efter? Vi finns här för att hjälpa till!