Esegui codice

L'azione Esegui codice esegue JavaScript. Puoi trasferire i dati dei passaggi precedenti nel flusso di lavoro come input per l'azione Esegui codice e utilizzare i valori restituiti nei passaggi successivi.

Campi

L'azione Esegui codice contiene i seguenti campi.

Campi utilizzati nell'azione Esegui codice.
CampoDescrizione
InputObbligatorio. Una query GraphQL per utilizzare i dati dei passaggi precedenti come input per l'azione Esegui codice.
OutputObbligatorio. Una rappresentazione dei dati da restituire dall'azione, definita nello Schema Definition Language (SDL) di GraphQL.
CodiceObbligatorio. Il JavaScript che verrà eseguito dall'azione Esegui codice.

Dati di input

I dati di input possono essere trasferiti dai passaggi effettuati prima dell'azione Esegui codice. Per includere tali dati puoi scrivere una query GraphQL nel campo Input. I dati restituiti dalla query saranno disponibili come argomento input della funzione contrassegnata con export default, chiamata main per convenzione.

La query di input è una query per i dati dell'ambiente Flow, non una query dell'API Shopify Admin, pertanto non puoi inserire una query di Shopify nei dati di input. Inoltre, Flow gestisce edges e nodes nella query, quindi non è necessario aggiungere quest'ultimi o altra sintassi di spostamento 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 strutturati nella firma della funzione:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

Metafield

Per accedere a singoli valori dei metafield in Esegui codice, devi prima aggiungere il metafield ai dati dell'ambiente Flow. Questa operazione può essere eseguita in qualsiasi azione o condizione diversa da Esegui codice. Ad esempio, puoi aggiungere un'azione di Output registro e seguire le istruzioni per aggiungere il metafield.

Dopo che un metafield è stato aggiunto all'ambiente del flusso di lavoro, puoi accedervi in Esegui codice. Supponiamo, ad esempio, che tu abbia aggiunto un metafield dell'ordine con il nome alias di giftMessage. Potrai 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 Schema Definition Language (SDL) di GraphQL. I tipi di output supportati sono String, Int, Float, Boolean e ID, che seguono le specifiche SDL per specificare i campi, gli elenchi e i dati personalizzati obbligatori.

Ad esempio, per restituire una stringa denominata giftMessage e un numero chiamato 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 restituire tali dati nel codice JavaScript, restituisci un oggetto corrispondente 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 chiamato Gift contenente una stringa denominata message e un numero chiamato 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 tali dati nei passaggi successivi a questa azione, utilizza la variabile denominata Esegui codice, che verrà digitata in base allo schema Output definito nella configurazione dell'azione Esegui codice. Puoi utilizzare questa variabile sia nelle condizioni che nelle azioni.

Console.log

Puoi utilizzare console.log per eseguire l'output dei dati nel registro di esecuzione del flusso di lavoro di Flow per la risoluzione dei problemi. L'output sarà visibile nel registro Esegui per il flusso di lavoro. Ad esempio, sono validi i seguenti elementi:

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 utilizzare console.info, console.error o altre funzioni nell'azione Esegui codice.

Esempio

Esempi per l'azione Esegui codice sono disponibili nel repository degli esempi Flow.

Limitazioni

L'azione Esegui codice presenta le seguenti limitazioni:

  • L'azione Esegui codice supporta JavaScript ECMA2020. Non supporta le API NodeJS o CommonJS o l'importazione di moduli.
  • Il codice non può effettuare chiamate http (fetch).
  • Non si possono utilizzare le funzioni casuali e basate sull'orario. I dati relativi alla data, ad esempio scheduledAt o createdAt, possono essere inseriti come input.
  • Console.log non può accedere alla console del browser.
  • Non puoi aggiungere l'alias del metafield direttamente nell'azione Esegui codice. Visualizza la sezione dei metafield dedicata a come ottenere questo risultato.

Inoltre, vengono applicati i seguenti limiti:

  • La query per i dati di input ha un limite di 5.000 caratteri.
  • Lo schema per i dati di output ha un limite di 5.000 caratteri.
  • Il payload dei dati di output e l'output di Console.log sono limitati a un massimo di 50 KB combinati.
  • Il codice non può superare i 50.000 caratteri.
  • La durata totale dell'esecuzione ha un limite di 5 secondi.
  • L'utilizzo della memoria ha un limite di 10 MB.

Modelli

Aggiunta di un articolo gratuito (scontato del 100%) ai nuovi ordini

Questo modello aggiunge un articolo gratuito e scontato ai nuovi ordini se l'articolo è disponibile. Controlla le scorte, applica uno sconto del 100% e aggiorna l'ordine senza informare il cliente. Questa automazione potrebbe essere utile per (1) migliorare la soddisfazione del cliente includendo nell'ordine un articolo gratuito a sorpresa, (2) promuovere prodotti nuovi o meno noti aggiungendoli come campioni gratuiti negli ordini o (3) semplificare le promozioni automatizzando l'inclusione e lo sconto di articoli gratuiti. Visualizza modello

Annullamento dei resi inattivi

Annulla automaticamente un reso che non è stato rimborsato o restituito a inventario entro un certo periodo di tempo. Visualizza modello

Conversione dei tag con un prefisso in un metafield del prodotto utilizzando l'azione Esegui codice

Questo flusso di lavoro prende i tag che iniziano con un prefisso, ad esempio "colore:", e li aggiunge a un elenco di metafield del prodotto. Utilizza l'azione Esegui codice per analizzare i tag e gli articoli esistenti nell'elenco dei metafield. Il flusso di lavoro viene eseguito quando viene creato un prodotto, ma può essere eseguito manualmente su prodotti esistenti. Visualizza modello

Invio di una notifica quando un cliente ordina più varianti di un prodotto

Ricevi una notifica via email quando un cliente ordina più varianti dello stesso prodotto. Visualizza modello

Invio di una notifica quando l'ordine contiene un pacchetto

Questo flusso di lavoro inizia quando viene creato un ordine e controlla se uno dei prodotti nell'ordine è stato acquistato come parte di un pacchetto. In tal caso, verrà inviata un'email interna con i dettagli del pacchetto. Inoltre, puoi utilizzare questo flusso di lavoro come punto di partenza per qualsiasi caso d'uso che deve rilevare la presenza di un pacchetto all'interno di un ordine. Visualizza modello

Aggiunta di un tag agli ordini con la campagna UTM associata

Vengono aggiunti tag agli ordini che contengono i nomi delle campagne UTM associate. Visualizza modello

Non trovi le risposte che stai cercando? Siamo qui per aiutarti.