Code uitvoeren
De actie Code uitvoeren voert JavaScript uit. Je kunt gegevens uit eerdere stappen in de workflow als invoer doorgeven aan de actie Code uitvoeren en waarden retourneren voor gebruik in volgende stappen.
Velden
De actie Code uitvoeren bevat de volgende velden.
| Veld | Beschrijving |
|---|---|
| Invoer | Vereist. Een GraphQL-query om gegevens uit eerdere stappen te gebruiken als invoer voor de actie Code uitvoeren. |
| Uitvoer | Vereist. Een weergave van de gegevens die door de actie moeten worden geretourneerd, gedefinieerd in de schemadefinitietaal (SDL) van GraphQL. |
| Code | Vereist. De JavaScript die de actie Code uitvoeren zal uitvoeren. |
Invoergegevens
Invoergegevens kunnen worden doorgegeven vanuit stappen die vóór de actie Code uitvoeren plaatsvinden. Om deze gegevens op te nemen, kun je een GraphQL-query schrijven in het veld Invoer. De gegevens die door de query worden geretourneerd, zijn beschikbaar als het input-argument voor de functie die is gemarkeerd met export default, die volgens de conventie main wordt genoemd.
De invoerquery is een query voor Flow-omgevingsgegevens, geen query voor de Shopify Admin API. Daarom kun je geen Shopify-query in de invoergegevens invoegen. Bovendien verwerkt Flow de edges en nodes in de query, dus je hoeft deze of andere pagineringssyntaxis niet aan je query toe te voegen.
Een voorbeeldinvoer die een bestelnotitie en de titel van een regelitem ophaalt:
{
order {
note
lineItems {
title
}
}
}Deze gegevens worden geconverteerd naar een input-variabele die in de code kan worden gebruikt:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Invoer kan ook worden gedestructureerd in de functiesignatuur:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metavelden
Om toegang te krijgen tot afzonderlijke metaveldwaarden in 'Code uitvoeren', moet je het metaveld eerst toevoegen aan de omgevingsgegevens van Flow. Dit kan in elke actie of voorwaarde worden gedaan, behalve in 'Code uitvoeren'. Je kunt bijvoorbeeld een actie Uitvoer loggen toevoegen en vervolgens de instructies volgen om het metaveld toe te voegen.
Nadat een metaveld is toegevoegd aan de workflowomgeving, kun je er in 'Code uitvoeren' toegang toe krijgen. Stel dat je bijvoorbeeld een bestelmetaveld met de aliasnaam giftMessage hebt toegevoegd. Je kunt er dan als volgt toegang toe krijgen in je invoerquery:
{
order {
giftMessage {
value
}
}
}Uitvoergegevens
De actie Run code kan aangepaste gegevens teruggeven. Gebruik het veld Output en de Schema Definition Language (SDL) van GraphQL om het type gegevens te definiëren dat de code teruggeeft. Ondersteunde uitvoertypen zijn String, Int, Float, Boolean en ID, die de SDL-specificatie volgen voor het opgeven van verplichte velden, lijsten en aangepaste gegevens.
Bijvoorbeeld, om een tekenreeks met de naam giftMessage en een getal met de naam totalGifts terug te geven:
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. Om deze gegevens uit te voeren in de JavaScript-code, geef je een object terug dat overeenkomt met het type:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Je kunt ook een aangepast type definiëren om complexere gegevens terug te geven. Bijvoorbeeld, om een type met de naam Gift terug te geven dat een tekenreeks met de naam message en een getal met de naam amount bevat:
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!
}Om toegang te krijgen tot deze gegevens in stappen die op deze actie volgen, gebruik je de variabele met de naam Run code. Deze wordt getypeerd volgens het Output-schema dat je definieert in de configuratie van de Run code-actie. Je kunt deze variabele zowel in voorwaarden als in acties gebruiken.
Console.log
Je kunt console.log gebruiken om gegevens uit te voeren naar het run-log van de Flow-workflow voor probleemoplossing. De uitvoer is zichtbaar in het run-log voor de workflow. De volgende voorbeelden zijn 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 in de actie Run code.
Voorbeeld
Voorbeelden voor de code-actie zijn te vinden in de Flow examples-repository.
Beperkingen
De actie Run code heeft de volgende beperkingen:
- De actie Run code ondersteunt ECMA2020 JavaScript. Het ondersteunt geen NodeJS- of CommonJS-API's en ook het importeren van modules niet.
- Je code kan geen HTTP-aanroepen (
fetch) maken. - Willekeurige en klokgebaseerde functies kunnen niet worden gebruikt. Datumgegevens, zoals een
scheduledAtofcreatedAt, kunnen als invoer worden doorgegeven. - Console.log logt niet naar de browserconsole.
- Om de payloadgrootte te beperken, geeft de payload van de uitvoergegevens alleen variabelen terug die in vervolgstappen worden gebruikt.
- Je kunt geen metaveldalias rechtstreeks toevoegen in de actie Run code. Bekijk hiervoor de sectie Metavelden op deze pagina.
Daarnaast gelden de volgende limieten:
- De query voor invoergegevens is beperkt tot 5000 tekens.
- Het schema voor uitvoergegevens is beperkt tot 5000 tekens.
- De payload van uitvoergegevens en de Console.log-uitvoer zijn beperkt tot een gecombineerde 50 KB.
- Code mag niet langer zijn dan 50.000 tekens.
- De totale uitvoeringsduur is beperkt tot 5 seconden.
- Het geheugengebruik is beperkt tot 10 MB.
Templates
Gratis artikel (met 100% korting) toevoegen aan nieuwe bestellingen
Deze template voegt een gratis artikel met korting toe aan nieuwe bestellingen wanneer het artikel op voorraad is. De template controleert de voorraad, past 100% korting toe en werkt de bestelling bij zonder de klant hiervan op de hoogte te stellen. Deze workflow kan automatisering toevoegen aan de volgende scenario's:
- De klanttevredenheid verhogen door een gratis verrassingsartikel aan bestellingen toe te voegen.
- Nieuwe of minder bekende producten promoten door ze als gratis monsters toe te voegen aan bestellingen.
- Promoties stroomlijnen door het toevoegen en afprijzen van gratis artikelen te automatiseren.
Inactieve retouren annuleren
Automatisch een retour annuleren die niet binnen een bepaalde periode is terugbetaald of waarvan de voorraad niet is aangevuld. Template bekijken
Tags met een voorvoegsel omzetten naar een productmetaveld met de actie Run code
Deze workflow neemt tags die beginnen met een voorvoegsel zoals 'color:' en voegt ze toe aan een productmetaveldlijst. De workflow gebruikt de actie Run code om de tags en bestaande artikelen in de metaveldlijst te parseren. De workflow wordt uitgevoerd wanneer een product wordt aangemaakt, maar kan ook handmatig worden uitgevoerd op bestaande producten. Template bekijken
Een melding verzenden wanneer een klant meerdere varianten van een product bestelt
Een e-mailmelding ontvangen wanneer een klant meerdere varianten van hetzelfde product bestelt. Template bekijken
Een melding verzenden wanneer een bestelling een bundel bevat
Deze workflow start wanneer een bestelling wordt aangemaakt en controleert of een van de producten in de bestelling is gekocht als onderdeel van een bundel. Als dit het geval is, wordt er een interne e-mail verzonden met de bundelgegevens. Daarnaast kun je deze workflow als uitgangspunt gebruiken voor elke usecase waarin de aanwezigheid van een bundel in een bestelling moet worden gedetecteerd. Template bekijken
Bestellingen taggen met bijbehorende UTM-campagne
Voegt tags toe aan bestellingen die de namen van bijbehorende UTM-campagnes bevatten. Template bekijken