Executare cod
Acțiunea Executare cod execută JavaScript. Puteți transmite date din pașii anteriori ai fluxului de lucru ca intrare pentru acțiunea Executare cod și puteți returna valori care vor fi utilizate în pașii următori.
Pe această pagină
Câmpuri
Acțiunea Executare cod conține următoarele câmpuri.
| Câmp | Descriere |
|---|---|
| Intrare | Obligatoriu. O interogare GraphQL pentru a utiliza datele din pașii anteriori ca intrare pentru acțiunea Executare cod. |
| Ieșire | Obligatoriu. O reprezentare a datelor care urmează să fie returnate de acțiune, definită în limbajul de definire a schemei (SDL) al GraphQL. |
| Cod | Obligatoriu. Codul JavaScript pe care îl va executa acțiunea Executare cod. |
Date de intrare
Datele de intrare pot fi transmise din pașii care au loc înaintea acțiunii Executare cod. Pentru a include aceste date, puteți scrie o interogare GraphQL în câmpul Intrare. Datele returnate de interogare vor fi disponibile ca argument input pentru funcția marcată cu export default, numită convențional main.
Interogarea de intrare este o interogare pentru datele mediului Flow, nu o interogare către Shopify Admin API. Prin urmare, nu puteți insera o interogare Shopify în datele de intrare. În plus, Flow gestionează edges și nodes în interogare, astfel încât nu este nevoie să adăugați acestea sau altă sintaxă de paginare la interogarea dvs.
Un exemplu de intrare care obține o notă de comandă și titlul unui articol individual:
{
order {
note
lineItems {
title
}
}
}Aceste date sunt convertite într-o variabilă input care poate fi utilizată în cod:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Intrările pot fi, de asemenea, destructurate în semnătura funcției:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metacâmpuri
Pentru a accesa valori unice de metacâmp în Executare cod, trebuie mai întâi să adăugați metacâmpul la datele de mediu ale Flow. Acest lucru se poate face în orice acțiune sau condiție, alta decât Executare cod. De exemplu, puteți adăuga o acțiune Jurnal ieșire și apoi urmați instrucțiunile pentru a adăuga metacâmpul.
După ce un metacâmp a fost adăugat la mediul fluxului de lucru, îl puteți accesa în Executare cod. De exemplu, să presupunem că ați adăugat un metacâmp Comandă cu aliasul giftMessage. Apoi îl puteți accesa în interogarea de intrare:
{
order {
giftMessage {
value
}
}
}Date de ieșire
Acțiunea Run code poate returna date personalizate. Pentru a defini tipul de date pe care le va returna codul, utilizați câmpul Output și limbajul de definire a schemei (SDL) al GraphQL. Tipurile de ieșire acceptate sunt String, Int, Float, Boolean și ID, care respectă specificația SDL pentru modul de specificare a câmpurilor obligatorii, a listelor și a datelor personalizate.
De exemplu, pentru a returna un șir numit giftMessage și un număr numit totalGifts:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}Comentariile sunt opționale, dar vor fi utilizate pentru a descrie datele în interfața de utilizare Flow. Pentru a genera aceste date ca ieșire în codul JavaScript, returnați un obiect care corespunde tipului:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}De asemenea, puteți defini un tip personalizat pentru a returna date mai complexe. De exemplu, pentru a returna un tip numit Gift care conține un șir numit message și un număr numit 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!
}Pentru a accesa aceste date în pașii care urmează acestei acțiuni, utilizați variabila numită Run code, care va fi tipizată în funcție de schema Output pe care o definiți în configurația acțiunii Run code. Puteți utiliza această variabilă atât în condiții, cât și în acțiuni.
Console.log
Puteți utiliza console.log pentru a genera date ca ieșire în jurnalul de execuție a fluxului de lucru din Flow, în scopuri de depanare. Ieșirea va fi vizibilă în jurnalul de execuție pentru fluxul de lucru. De exemplu, următoarele sunt valide:
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,
};
}Nu puteți utiliza console.info, console.error sau alte funcții în acțiunea Run code.
Exemplu
Exemple pentru acțiunea de cod pot fi găsite în depozitul de exemple Flow.
Limitări
Acțiunea Run code are următoarele limitări:
- Acțiunea Run code acceptă JavaScript ECMA2020. Nu acceptă API-urile NodeJS sau CommonJS și nici importul de module.
- Codul dvs. nu poate efectua apeluri HTTP (
fetch). - Funcțiile aleatorii și cele bazate pe ceas nu pot fi utilizate. Datele de tip dată, cum ar fi
scheduledAtsaucreatedAt, pot fi transmise ca intrare. - Console.log nu înregistrează în consola browserului.
- Pentru a economisi din dimensiunea sarcinii utile, sarcina utilă a datelor de ieșire returnează numai variabilele utilizate în pașii ulteriori.
- Nu puteți adăuga un alias de metacâmp direct în acțiunea Run code. Pentru a realiza acest lucru, consultați secțiunea Metacâmpuri de pe această pagină.
În plus, se aplică următoarele limite:
- Interogarea datelor de intrare este limitată la 5.000 de caractere.
- Schema datelor de ieșire este limitată la 5.000 de caractere.
- Sarcina utilă a datelor de ieșire și ieșirea Console.log sunt limitate la un total de 50 KB.
- Codul nu poate avea mai mult de 50.000 de caractere.
- Durata totală de execuție este limitată la 5 secunde.
- Utilizarea memoriei este limitată la 10 MB.
Șabloane
Adăugați un articol gratuit (cu reducere de 100%) la comenzile noi
Acest șablon adaugă un articol gratuit, cu reducere, la comenzile noi atunci când articolul este în stoc. Verifică inventarul, aplică o reducere de 100% și actualizează comanda fără a notifica clientul. Acest flux de lucru poate ajuta la adăugarea automatizării în următoarele scenarii:
- Îmbunătățiți satisfacția clienților prin includerea unui articol gratuit surpriză în comanda acestora.
- Promovați produse noi sau mai puțin cunoscute adăugându-le ca mostre gratuite în comenzi.
- Eficientizați promoțiile prin automatizarea includerii și reducerii articolelor gratuite.
Anularea retururilor inactive
Anulează automat un retur care nu a fost rambursat sau reaprovizionat într-o anumită perioadă de timp. Vizualizați șablonul
Convertirea etichetelor cu un prefix într-un metacâmp de produs utilizând acțiunea Run code
Acest flux de lucru preia etichetele care încep cu un prefix, cum ar fi „color:”, și le adaugă la o listă de metacâmpuri de produs. Utilizează acțiunea Run code pentru a analiza etichetele și articolele existente în lista de metacâmpuri. Fluxul de lucru se execută atunci când este creat un produs, dar poate fi rulat manual pe produsele existente. Vizualizați șablonul
Trimiterea unei notificări atunci când un client comandă mai multe variante ale unui produs
Primiți o notificare prin e-mail atunci când un client comandă mai multe variante ale aceluiași produs. Vizualizați șablonul
Trimiterea unei notificări atunci când comanda conține un pachet
Acest flux de lucru începe atunci când este creată o comandă și verifică dacă vreunul dintre produsele din comandă a fost achiziționat ca parte a unui pachet. Dacă se găsește, se trimite un e-mail intern cu detaliile pachetului. În plus, puteți utiliza acest flux de lucru ca punct de plecare pentru orice caz de utilizare care necesită detectarea prezenței unui pachet într-o comandă. Vizualizați șablonul
Etichetarea comenzilor cu campania UTM asociată
Adaugă etichete la comenzile care conțin numele oricăror campanii UTM asociate. Vizualizați șablonul