Executar codi
L'acció Executar codi executa JavaScript. Pots transferir dades dels passos anteriors del flux de treball com a entrada a l'acció Executar codi i retornar valors per utilitzar-los en passos posteriors.
En aquesta pàgina
Camps
L'acció Executar codi conté els camps següents.
| Camp | Descripció |
|---|---|
| Entrada | Obligatori. Una consulta de GraphQL per utilitzar dades de passos anteriors com a entrada a l'acció Executar codi. |
| Sortida | Obligatori. Una representació de les dades que ha de retornar l'acció, definides en el llenguatge de definició d'esquemes (SDL) de GraphQL. |
| Codi | Obligatori. El JavaScript que executarà l'acció Executar codi. |
Dades d'entrada
Les dades d'entrada es poden transferir des de passos que tenen lloc abans de l'acció Executar codi. Per incloure aquestes dades, pots escriure una consulta de GraphQL al camp Entrada. Les dades que retorni la consulta estaran disponibles com a argument input per a la funció marcada amb export default, anomenada main per convenció.
La consulta d'entrada és una consulta de les dades d'entorn de Flow, no pas una consulta a l'API Shopify Admin. Per tant, no pots inserir una consulta de Shopify a les dades d'entrada. A més, Flow gestiona els elements edges i nodes de la consulta, de manera que no cal que els afegeixis ni tampoc cap altra sintaxi de paginació a la teva consulta.
Un exemple d'entrada que obté una nota de comanda i el títol d'una partida:
{
order {
note
lineItems {
title
}
}
}Aquestes dades es converteixen en una variable input que es pot utilitzar en el codi:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Les entrades també es poden desestructurar a la signatura de la funció:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metacamps
Per accedir a valors de metacamps únics a Executar codi, primer has d'afegir el metacamp a les dades d'entorn de Flow. Això es pot fer en qualsevol acció o condició que no sigui Executar codi. Per exemple, pots afegir una acció Registrar sortida i després seguir les instruccions per afegir el metacamp.
Un cop s'hagi afegit un metacamp a l'entorn del flux de treball, pots accedir-hi a Executa el codi. Per exemple, suposem que afegeixes un metacamp Order amb l'àlies giftMessage. Aleshores podràs accedir-hi a la teva consulta d'entrada:
{
order {
giftMessage {
value
}
}
}Dades de sortida
L'acció Executa el codi pot retornar dades personalitzades. Per definir el tipus de dades que retornarà el codi, utilitza el camp Sortida i el llenguatge de definició d'esquemes (SDL) de GraphQL. Els tipus de sortida compatibles són String, Int, Float, Boolean i ID, que segueixen l'especificació de l'SDL per indicar camps obligatoris, llistes i dades personalitzades.
Per exemple, per retornar una cadena anomenada giftMessage i un número anomenat totalGifts:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}Els comentaris són opcionals, però s'utilitzaran per descriure les dades a la interfície d'usuari de Flow. Per obtenir aquestes dades de sortida al codi JavaScript, retorna un objecte que coincideixi amb el tipus:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}També pots definir un tipus personalitzat per retornar dades més complexes. Per exemple, per retornar un tipus anomenat Gift que contingui una cadena anomenada message i un número anomenat 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!
}Per accedir a aquestes dades en els passos posteriors a aquesta acció, utilitza la variable anomenada Executa el codi, la qual es tipificarà segons l'esquema Output que defineixis a la configuració de l'acció Executa el codi. Pots utilitzar aquesta variable tant en condicions com en accions.
Console.log
Pots utilitzar console.log per enviar dades de sortida al registre d'execució del flux de treball de Flow amb finalitats de resolució de problemes. La sortida serà visible al registre d'execució del flux de treball. Per exemple, les ordres següents són vàlides:
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,
};
}No pots utilitzar console.info, console.error ni altres funcions a l'acció Executa el codi.
Exemple
Pots trobar exemples de l'acció de codi al repositori d'exemples de Flow.
Limitacions
L'acció Executa el codi té les limitacions següents:
- L'acció Executa el codi és compatible amb JavaScript ECMA2020. No és compatible amb les API NodeJS o CommonJS ni amb la importació de mòduls.
- El codi no pot fer crides HTTP (
fetch). - No es poden utilitzar funcions aleatòries ni basades en el rellotge. Les dades de data, com ara
scheduledAtocreatedAt, es poden passar com a entrada. - Console.log no fa el registre a la consola del navegador.
- Per estalviar espai en la càrrega útil, la càrrega útil de les dades de sortida només retorna les variables que s'utilitzen en els passos posteriors.
- No pots afegir directament cap àlies de metacamp a l'acció Executa el codi. Per fer-ho, consulta la secció Metacamps d'aquesta pàgina.
A més a més, s'apliquen els límits següents:
- La consulta de dades d'entrada està limitada a 5.000 caràcters.
- L'esquema de dades de sortida està limitat a 5.000 caràcters.
- La càrrega útil de les dades de sortida i la sortida de Console.log tenen un límit conjunt de 50 KB.
- El codi no pot tenir més de 50.000 caràcters.
- La durada total de l'execució està limitada a 5 segons.
- L'ús de la memòria està limitat a 10 MB.
Plantilles
Afegeix un article gratuït (amb un 100 % de descompte) a les comandes noves
Aquesta plantilla afegeix un article gratuït amb descompte a les comandes noves quan n'hi ha estoc. Comprova l'estoc, hi aplica un descompte del 100 % i actualitza la comanda sense avisar el client. Aquest flux de treball pot ajudar a afegir automatització als escenaris següents:
- Millorar la satisfacció del client en incloure-li un article gratuït sorpresa a la seva comanda.
- Promocionar productes nous o menys coneguts afegint-los com a mostres gratuïtes a les comandes.
- Agilitzar les promocions automatitzant la inclusió i l'aplicació de descomptes dels articles gratuïts.
Cancel·la les devolucions inactives
Cancel·la automàticament qualsevol devolució que no s'hagi reemborsat ni reposat en un determinat període de temps. Mostra la plantilla
Converteix les etiquetes amb un prefix en un metacamp de producte utilitzant l'acció Executa el codi
Aquest flux de treball agafarà etiquetes que comencin amb un prefix com ara "color:" i les afegirà a una llista de metacamps de producte. Utilitza l'acció Executa el codi per analitzar les etiquetes i els elements existents a la llista de metacamps. El flux de treball s'executa en crear un producte, però es pot executar manualment amb els productes existents. Mostra la plantilla
Envia una notificació quan un client faci una comanda de diverses variants d'un producte
Rep una notificació per correu electrònic quan un client faci una comanda de diverses variants del mateix producte. Mostra la plantilla
Envia una notificació quan la comanda contingui un paquet
Aquest flux de treball comença quan es crea una comanda i comprova si s'ha comprat algun dels productes de la comanda com a part d'un paquet. Si es troba, s'envia un correu electrònic intern amb els detalls del paquet. A més a més, pots utilitzar aquest flux de treball com a punt de partida per a qualsevol cas d'ús que necessiti detectar la presència d'un paquet dins d'una comanda. Mostra la plantilla
Etiqueta les comandes amb la campanya UTM associada
Afegeix etiquetes a les comandes que continguin els noms de qualsevol campanya UTM associada. Mostra la plantilla