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.
Op deze pagina
Velden
De actie Code uitvoeren bevat de volgende velden.
Veld | Beschrijving |
---|---|
Invoer | Vereist. Een GraphQL-query om gegevens van vorige stappen te gebruiken als invoer voor de actie Code uitvoeren. |
Uitvoer | Vereist. Een weergave van de gegevens die door de actie worden geretourneerd, gedefinieerd in de Schema Definition Language (SDL) van GraphQL. |
Code | Vereist. 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 String
Int
, 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
ofcreatedAt
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