Esegui codice
L'azione Esegui codice esegue JavaScript. Puoi passare i dati dei passaggi precedenti del flusso di lavoro come input all'azione Esegui codice e restituire valori da utilizzare nei passaggi successivi.
In questa pagina
Campi
L’azione Esegui codice contiene i seguenti campi.
| Campo | Descrizione |
|---|---|
| Input | Obbligatorio. Una query GraphQL da utilizzare per i dati dei passaggi precedenti come input per l’azione Esegui codice. |
| Output | Obbligatorio. Una rappresentazione dei dati che devono essere restituiti dall'azione, definiti nel linguaggio di definizione dello schema (SDL) di GraphQL. |
| Codice | Obbligatorio. Il codice JavaScript che l’azione Esegui codice eseguirà. |
Dati di input
I dati di input possono essere passati da passaggi che si verificano prima dell'azione Esegui codice. Per includere questi dati, puoi scrivere una query GraphQL nel campo Input. I dati restituiti dalla query saranno disponibili come argomento input per la funzione contrassegnata con export default, chiamata per convenzione main.
La query di input è una query per i dati dell'ambiente di Flow, non una query per la Shopify Admin API. Pertanto non è possibile inserire una query di Shopify nei dati di input. Inoltre, Flow gestisce edges e nodes nella query, quindi non è necessario aggiungerli o aggiungere altre sintassi di impaginazione alla query.
Un esempio di input che ottiene una nota sull'ordine e il titolo di una voce:
{
order {
note
lineItems {
title
}
}
}Questi dati vengono convertiti in una variabile input che può essere utilizzata nel codice:
export default function main(input) {
// input.order.note
// input.order.lineItems[0].title
}Gli input possono anche essere destrutturati nella firma della funzione:
export default function main({order}) {
// order.note
// order.lineItems[0].title
}Metafield
Per accedere a singoli valori di metafield in Esegui codice, devi prima aggiungere il metafield ai dati dell'ambiente di Flow. Questa operazione può essere eseguita in qualsiasi azione o condizione diversa da Esegui codice. Ad esempio, puoi aggiungere un'azione Registra output e quindi seguire le istruzioni per aggiungere il metafield.
Dopo che un metafield è stato aggiunto all'ambiente del flusso di lavoro, puoi accedervi in Esegui codice. Ad esempio, supponiamo che tu abbia aggiunto un metafield Ordine con il nome alias giftMessage. Puoi quindi accedervi nella query di input:
{
order {
giftMessage {
value
}
}
}Dati di output
L’azione Esegui codice può restituire dati personalizzati. Per definire il tipo di dati che il codice restituirà, utilizza il campo Output e il linguaggio SDL (Schema Definition Language) di GraphQL. I tipi di output supportati sono String, Int, Float, Boolean e ID, che seguono la specifica SDL su come specificare campi obbligatori, elenchi e dati personalizzati.
Ad esempio, per restituire una stringa denominata giftMessage e un numero denominato totalGifts:
type Output {
"The message to include in the gift"
giftMessage: String!
"The total number of gifts"
totalGifts: Int!
}I commenti sono facoltativi, ma verranno utilizzati per descrivere i dati nell’interfaccia utente di Flow. Per generare l’output di questi dati nel codice JavaScript, restituisci un oggetto che corrisponda al tipo:
export default function main(input) {
// your code
return {
giftMessage: 'Hello',
totalGifts: 1,
};
}Puoi anche definire un tipo personalizzato per restituire dati più complessi. Ad esempio, per restituire un tipo denominato Gift che contiene una stringa denominata message e un numero denominato 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 accedere a questi dati nei passaggi successivi a questa azione, utilizza la variabile denominata Esegui codice, che verrà tipizzata in base allo schema Output che definisci nella configurazione dell’azione Esegui codice. Puoi utilizzare questa variabile sia nelle condizioni che nelle azioni.
Console.log
Puoi usare console.log per visualizzare i dati nel registro delle esecuzioni del flusso di lavoro di Flow ai fini della risoluzione dei problemi. L’output sarà visibile nel registro delle esecuzioni del flusso di lavoro. Ad esempio, i seguenti sono validi:
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,
};
}Non puoi usare console.info, console.error o altre funzioni nell’azione Esegui codice.
Esempio
Puoi trovare esempi per l'azione del codice nel repository degli esempi di Flow.
Limitazioni
L’azione Esegui codice presenta le seguenti limitazioni:
- L’azione Esegui codice supporta JavaScript ECMA2020. Non supporta le API NodeJS o CommonJS, né l’importazione di moduli.
- Il codice non può effettuare chiamate HTTP (
fetch). - Non è possibile utilizzare funzioni casuali e basate sull'orologio. I dati relativi alle date, come
scheduledAtocreatedAt, possono essere trasmessi come input. - Console.log non esegue la registrazione nella console del browser.
- Per risparmiare sulle dimensioni del payload, il payload dei dati di output restituisce solo le variabili utilizzate nei passaggi successivi.
- Non puoi aggiungere un alias di metafield direttamente nell’azione Esegui codice. Per farlo, consulta la sezione Metafield in questa pagina.
Inoltre, vengono applicati i seguenti limiti:
- La query dei dati di input è limitata a 5000 caratteri.
- Lo schema dei dati di output è limitato a 5000 caratteri.
- Il payload dei dati di output e l'output di Console.log sono limitati a un totale di 50 KB.
- Il codice non può superare i 50.000 caratteri.
- La durata totale dell’esecuzione è limitata a 5 secondi.
- L’utilizzo della memoria è limitato a 10 MB.
Modelli
Aggiungi un articolo gratuito (scontato del 100%) ai nuovi ordini
Questo modello aggiunge un articolo gratuito scontato ai nuovi ordini quando l’articolo è disponibile. Controlla le scorte, applica uno sconto del 100% e aggiorna l’ordine senza avvisare il cliente. Questo flusso di lavoro può aiutare ad aggiungere l’automazione ai seguenti scenari:
- Aumenta la soddisfazione del cliente includendo un articolo in omaggio a sorpresa nell’ordine.
- Promuovi prodotti nuovi o meno conosciuti aggiungendoli come campioni gratuiti agli ordini.
- Semplifica le promozioni automatizzando l'inclusione e lo sconto degli articoli gratuiti.
Annulla i resi inattivi
Annulla automaticamente un reso che non è stato rimborsato o riassortito entro un determinato periodo di tempo. Visualizza modello
Converti i tag con un prefisso in un metafield di prodotto utilizzando l'azione Esegui codice
Questo flusso di lavoro acquisisce i tag che iniziano con un prefisso come ‘colore:’ e li aggiunge a un elenco di metafield di prodotto. Utilizza l’azione Esegui codice per analizzare i tag e gli articoli esistenti nell’elenco di metafield. Il flusso di lavoro viene eseguito quando viene creato un prodotto, ma può essere eseguito manualmente sui prodotti esistenti. Visualizza modello
Invia una notifica quando un cliente ordina più varianti di un prodotto
Ricevi una notifica email quando un cliente ordina più varianti dello stesso prodotto. Visualizza modello
Invia una notifica quando l’ordine contiene un pacchetto
Questo flusso di lavoro si avvia quando viene creato un ordine e controlla se uno dei prodotti nell’ordine è stato acquistato come parte di un pacchetto. In caso affermativo, viene inviata un’email interna con i dettagli del pacchetto. Inoltre, puoi usare questo flusso di lavoro come punto di partenza per qualsiasi caso d’uso che richieda di rilevare la presenza di un pacchetto all’interno di un ordine. Visualizza modello
Aggiungi tag agli ordini con la campagna UTM associata
Aggiunge tag agli ordini che contengono i nomi delle campagne UTM associate. Visualizza modello