Code uitvoeren

Met de actie Code uitvoeren voer je JavaScript-code uit. Je kunt gegevens van vorige stappen in de workflow doorgeven als invoer voor de actie Code uitvoeren en retourwaarden die je wil gebruiken in de volgende stappen.

Velden

De actie Code uitvoeren bevat de volgende velden.

In de actie Code uitvoeren gebruikte velden.
VeldBeschrijving
InvoerVereist. Een GraphQL-query om gegevens van vorige stappen te gebruiken als invoer voor de actie Code uitvoeren.
UitvoerVereist. Een weergave van de gegevens die door de actie worden geretourneerd, gedefinieerd in de Schema Definition Language (SDL) van GraphQL.
CodeVereist. Het JavaScript dat je uitvoert met de actie Code uitvoeren.

Invoergegevens

Invoergegevens kunnen worden doorgegeven vanuit stappen die plaatsvinden voor de actie Code uitvoeren. Als je deze gegevens wil opnemen, kun je een GraphQL-query schrijven in het veld Invoer. De gegevens die uit de query worden geretourneerd, zijn beschikbaar als het argument input voor de functie die is gemarkeerd met export default, die volgens de conventie main heet.

De invoerquery is een query voor Flow-omgevingsgegevens, niet een query aan de Shopify Admin API. Je kunt daarom geen Shopify-query in de invoergegevens invoegen. Flow verwerkt ook de edges en nodes in de query. Je hoeft deze of andere syntax niet aan je query toe te voegen.

Een voorbeeldinvoer waarmee je een opmerking bij een bestelling en de titel van een orderregel krijgt:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Deze gegevens worden geconverteerd naar een input-variabele die je kunt gebruiken in de code:

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

Je kunt invoer ook destructureren in de functiehandtekening:

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

Metavelden

Voor toegang tot enkelvoudige metaveldwaarden in Run code voeg je eerst het metaveld toe aan de omgevingsgegevens van Flow. Dit gebeurt in elke andere actie of voorwaarde dan Run code. Je kunt bijvoorbeeld een Uitvoerlog-actie toevoegen en daarna het metaveld volgens de instructies toevoegen.

Nadat een metaveld is toegevoegd aan de workflowomgeving, is het toegankelijk voor je in Run code. Stel dat je een metaveld Bestelling hebt toegevoegd met de aliasnaam giftMessage. Je kunt er daarna toegang toe krijgen in je invoerquery:

{
  order {
    giftMessage {
      value
    }
  }
}

Uitvoergegevens

De actie Code uitvoeren kan aangepaste gegevens retourneren. Gebruik het veld Uitvoer en de Schema Definition Language (SDL) van GraphQL om het type gegevens te definiëren dat de code retourneert. De ondersteunde uitvoertypen zijn StringInt, Float, Boolean en ID. Deze volgen de SDL-specificatie voor het specificeren van vereiste velden, lijsten en aangepaste gegevens.

Als je bijvoorbeeld een tekenreeks met de naam giftMessage en een nummer met de naam totalGifts wil retourneren:

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

De opmerkingen zijn optioneel, maar worden gebruikt om de gegevens in de Flow UI te beschrijven. Retourneer een object dat overeenkomt met het type om deze gegevens uit te voeren in de JavaScript-code:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Je kunt ook een aangepast type definiëren om complexere gegevens te retourneren. Als je bijvoorbeeld een type met de naam Gift dat een tekenreeks met de naam message en een nummer met de naam amount bevat, wil retourneren:

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!
}

Gebruik de variabele Code uitvoeren die wordt getypt op basis van het Output-schema dat je definieert in de actieconfiguratie Code uitvoeren, voor toegang tot deze gegevens in stappen die deze actie volgen. Je kunt deze variabele zowel in voorwaarden als in acties gebruiken.

Console.log

Met console.log kun je gegevens voor probleemoplossing uitvoeren naar het workflowuitvoeringslogboek van Flow. De uitvoer is zichtbaar in het uitvoeringslogboek van de workflow. Het volgende is bijvoorbeeld geldig:

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,
  };
}

Je kunt console.info, console.error of andere functies niet gebruiken bij de actie Code uitvoeren.

Voorbeeld

Voorbeelden van de actie Code uitvoeren vind je in de opslagplaats met Flow-voorbeelden.

Beperkingen

De actie Code uitvoeren heeft de volgende beperkingen:

  • De actie Code uitvoeren ondersteunt JavaScript ECMA2020. De actie ondersteunt de API's NodeJS of CommonJS, of het importeren van modules niet.
  • De code kan geen HTTP-aanroepen doen (fetch).
  • Willekeurige en op de tijd gebaseerde functies kunnen niet worden gebruikt. Datumgegevens, zoals een scheduledAt of createdAt kunnen worden doorgegeven als invoer.
  • Console.log wordt niet op de browserconsole gelogd.
  • Je kunt metaveld-alias niet rechtstreeks toevoegen in de Run code-actie. Bekijk de sectie metavelden voor informatie over hoe je dit kunt doen.

Bovendien worden de volgende beperkingen opgelegd:

  • De query voor invoergegevens is beperkt tot 5000 tekens.
  • Het schema voor uitvoergegevens is beperkt tot 5000 tekens.
  • De uitvoergegevens voor payload en Console.log zijn samen beperkt tot 50 kB.
  • De code mag niet langer zijn dan 50.000 tekens.
  • De totale duur van de uitvoering is beperkt tot 5 seconden.
  • Het geheugengebruik is beperkt tot 10 MB.

Templates

Voeg gratis artikel (100% korting) toe aan nieuwe bestellingen

Deze template voegt een gratis artikel toe aan nieuwe bestellingen als het artikel op voorraad is. Deze controleert de voorraad, past 100% korting toe en werkt de bestelling bij zonder de klant op de hoogte te stellen. Deze automatisering is nuttig om (1) klanttevredenheid te verhogen door een gratis verrassing bij de bestelling te plaatsen, (2) nieuwe of minder bekende producten te promoten door ze als monsters bij bestellingen te plaatsen of (3) promoties te stroomlijnen door het meegeven van gratis producten en het aftrekken van de korting te automatiseren. Template bekijken

Annuleer inactieve retouren

Annuleer automatisch een retour die niet binnen een bepaalde tijd terugbetaald of herbevoorraad is. Template bekijken

Zet tags met een voorvoegsel om naar een productmetaveld met behulp van de actie Code uitvoeren

Deze workflow neemt tags die beginnen met een voorvoegsel, zoals 'kleur:' en voegt ze aan een lijst productmetavelden toe. De workflow gebruikt de actie Code uitvoeren om de tags en bestaande artikelen in de metaveldlijst te parseren. De workflow wordt uitgevoerd nadat een nieuw product is aangemaakt, maar kan ook handmatig worden uitgevoerd op bestaande producten. Template bekijken

Een melding sturen wanneer een klant meerdere varianten van een product bestelt

Ontvang een e-mailmelding wanneer een klant meerdere varianten van hetzelfde product bestelt. Template bekijken

Een melding sturen wanneer de bestelling een bundel bevat

Deze workflow begint wanneer een bestelling wordt aangemaakt en controleert of een van de producten in de bestelling is gekocht als onderdeel van een bundel. Indien gevonden, wordt er een interne e-mail gevonden met de bundelgegevens. Je kunt deze workflow ook gebruiken als uitgangspunt voor elk gebruiksgeval dat de aanwezigheid van een bundel binnen een bestelling detecteert. Template bekijken

Bestellingen taggen met bijbehorende UTM-campagne

Voegt tags toe aan bestellingen die de namen van bijbehorende UTM-campagnes bevatten. Template bekijken

Zat het antwoord dat je zocht er niet bij? Wij helpen je graag verder.