Exécuter le code

L’action Exécuter le code exécute JavaScript. Vous pouvez transmettre à l’action Exécuter le code des données provenant d’étapes précédentes du flux de travail comme entrée et les valeurs de retour à utiliser dans les étapes suivantes.

Champs

L’action Exécuter le code contient les champs suivants.

Champs utilisés dans l’action Exécuter le code.
Champ Description
Entrée Obligatoire. Une requête GraphQL pour utiliser les données des étapes précédentes comme entrée de l’action Exécuter le code.
Sortie Obligatoire. Une représentation des données à retourner par l’action, définie dans le Schema Definition Language (SDL) GraphQL.
Code Obligatoire. JavaScript que l’action Exécuter le code exécutera.

Données d’entrée

Les données d’entrée peuvent être transmises à partir d’étapes précédant l’action Exécuter le code. Pour inclure ces données, vous pouvez rédiger une requête GraphQL dans le champ Entrée. Les données retournées par la requête seront disponibles comme argument input de la fonction marquée par export default. Vous n’avez pas besoin de gérer la pagination ou d’utiliser edges et nodes dans la requête, car Flow les gère pour vous.

Voici un exemple d’entrée qui permet d’obtenir une note de commande et le titre d’une rubrique :

{
  order {
    note
    lineItems {
      title
    }
  }
}

Ces données sont converties en une variable input, qui peut être utilisée dans le code :

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

Les entrées peuvent également être déstructurées dans la signature de la fonction :

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

Données de sortie

L’action Exécuter le code peut retourner des données personnalisées. Pour définir le type de données que le code retournera, utilisez le champ Sortie et le Schema Definition Language (SDL) GraphQL. Par exemple, pour retourner une chaîne appelée giftMessage et un nombre appelé totalGifts :

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

Les commentaires sont facultatifs, mais ils seront utilisés pour décrire les données dans l’interface utilisateur Flow. Pour produire ces données dans le code JavaScript, retournez un objet correspondant au type :

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Vous pouvez également définir un type personnalisé pour retourner des données plus complexes. Par exemple, pour renvoyer un type appelé Gift qui contient une chaîne appelée message et un numéro appelé 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!
}

Pour accéder à ces données dans les étapes qui suivent cette action, utilisez la variable nommée Exécuter le code, qui sera typée selon le schéma Output que vous définissez dans la configuration de l’action Exécuter le code. Vous pouvez utiliser cette variable à la fois dans les conditions et les actions.

Console.log

Vous pouvez utiliser console.log pour envoyer des données dans le journal d’exécution du flux de travail de Flow à des fins de résolution de problèmes. La sortie sera visible dans le journal d’exécution du flux de travail. Par exemple, les exemples suivants sont valides :

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,
  };
}

Vous ne pouvez pas utiliser console.info, console.error, ou d’autres fonctions dans l’action Exécuter le code.

Exemple

Des exemples de l’action Exécuter le code se trouvent dans le référentiel d’exemples Flow.

Limitations

L’action Exécuter le code présente les limites suivantes :

  • Votre code ne peut pas importer de modules.
  • Votre code ne peut pas effectuer d’appels http (fetch).
  • Les fonctions aléatoires et basées sur l’horloge ne peuvent pas être utilisées. Les données de date, telles que scheduledAt ou createdAt peuvent être transmises en tant qu’entrées.
  • Console.log ne se connecte pas à la console du navigateur.

En outre, les limites suivantes sont appliquées :

  • La requête de données d’entrée est limitée à 5 000 caractères.
  • Le schéma de données de sortie est limité à 5 000 caractères.
  • La charge utile des données de sortie et la sortie Console.log sont limitées à un total de 50 000 ko.
  • Le code ne peut pas comporter plus de 5 0000 caractères.
  • La durée totale d’exécution est limitée à 5 secondes.
  • L’utilisation de la mémoire est limitée à 10 Mo.

Feuille de route

L’équipe Flow prévoit d’ajouter des capacités à l’action Exécuter le code au fil du temps. Le tableau suivant présente les améliorations prévues et leurs dates de livraison estimées.

Feuille de route pour l’amélioration de l’action Exécuter le code
Amélioration Description Date de livraison estimée
Connexion Utilisez « console.log » pour envoyer des données dans le journal d’exécution à des fins de résolution de problèmes. Terminé.
Appels d’API externes Utilisez la récupération de JavaScript pour appeler des API. 3ᵉ trimestre 2024

Retour d’expérience

L’action Exécuter le code est un nouveau type d’étape dans Shopify Flow. Si vous avez des retours d’expérience et des questions, veuillez commenter cet article de la communauté Flow.

Prêt(e) à commencer à vendre avec Shopify ?

Essayez gratuitement