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ält Beskrivning
Indata Krävs. En GraphQL-fråga för att använda data från tidigare 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. Det JavaScript som åtgärden Kör kod kommer att exekvera.

Indata

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 kommer vara tillgängliga som input-argument till funktionen markerad med export default. Du behöver inte hantera sidnumrering eller använda edges och nodes i frågan, eftersom Flow hanterar dem åt dig.

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
}

Utdata

Åtgärden Kör kod kan returnera anpassad data. Definiera vilken typ av data som koden kommer att returnera genom att använda fältet Utdata och GraphQL:s schemadefinitionsspråk (SDL). 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.

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:

  • Din kod kan inte importera moduler.
  • Din kod kan inte göra http-anrop (fetch).
  • Din kod kan inte använda console.log.
  • Slumpvisa och tidsbaserade funktioner kan inte användas. Datumdata, till exempel en scheduledAt eller createdAt kan föras in som indata.

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 är begränsad till 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.

Färdplan

Flow-teamet planerar att lägga till funktioner till åtgärden Kör kod över tid. Följande tabell beskriver de planerade förbättringarna och deras beräknade leveransdatum.

Färdplan för förbättringar av åtgärden Kör kod
Förbättring Beskrivning Beräknad leverans
Buggfixar Korrigeringar av buggar och upprensning Februari 2024
Loggning Använd "console.log" för att mata ut data till Kör logg för felsökningsändamål. Början av april 2024
Externa API-anrop Använd JavaScripts hämtning för att anropa API:er. K3 2024

Feedback

Åtgärden Kör kod är en ny typ av steg i Shopify Flow. Kommentera detta Flow community-inlägg om du har feedback eller frågor.

Är du redo att börja sälja med Shopify?

Prova gratis