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.

Exemple

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

Limites

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).
  • Votre code ne peut pas utiliser de console.log.
  • 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.

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 est limitée à 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
Corrections de bugs Corrections de bugs et nettoyage Février 2024
Connexion Utilisez « console.log » pour envoyer des données dans le journal d’exécution à des fins de résolution de problèmes. Début avril 2024
Appels d’API externes Utilisez la récupération de JavaScript pour appeler des API. 3ᵉ trimestre 2024

Commentaires

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