Ejecutar código

La acción Ejecutar código ejecuta JavaScript. Puedes pasar datos de pasos anteriores en el flujo de trabajo como entrada para la acción Ejecutar código y mostrar valores que se usarán en los pasos siguientes.

Campos

La acción Ejecutar código contiene los siguientes campos.

Campos utilizados en la acción Ejecutar código.
CampoDescripción
EntradaObligatorio. Una consulta de GraphQL para usar datos de pasos anteriores como entrada para la acción Ejecutar código.
SalidaObligatorio. Una representación de los datos que la acción mostrará, definida en el lenguaje de definición de esquemas (SDL) de GraphQL.
CódigoObligatorio. El JavaScript que la acción Ejecutar código ejecutará.

Datos de entrada

Los datos de entrada se pueden pasar a partir de los pasos anteriores a la acción Ejecutar código. Para incluir estos datos, puedes escribir una consulta de GraphQL en el campo Entrada. Los datos que se obtienen de la consulta estarán disponibles como el argumento input para la función marcada con export default, que convencionalmente recibe el nombre demain.

La consulta de entrada se ejecuta para los datos de entorno de Flow, no se realiza a la API Shopify Admin. Por lo tanto, no puedes insertar una consulta de Shopify en los datos de entrada. Además, Flow controla edges y nodes en la consulta, por lo que no necesitas agregar esta ni otra sintaxis de paginación a la consulta.

Una entrada de ejemplo que recibe una nota de pedido y el título de una línea de artículo:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Estos datos se convierten en una variable input que se puede usar en el código:

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

Las entradas también se pueden desestructurar en la firma de la función:

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

Metacampos

Para acceder a valores de metacampos únicos en Ejecutar código, primero debes agregar el metacampo a los datos del entorno de Flow. Esto se realiza en cualquier acción o condición que no sea Ejecutar código. Por ejemplo, puedes agregar una acción Log output y luego seguir las instrucciones para agregar el metacampo.

Después de agregar un metacampo al entorno del flujo de trabajo, puedes acceder a él en Ejecutar código. Por ejemplo, supongamos que agregaste un metacampo Pedido con el nombre de alias giftMessage. Luego, puedes acceder a él en tu consulta de entrada:

{
  order {
    giftMessage {
      value
    }
  }
}

Datos de salida

La acción Ejecutar código puede mostrar datos personalizados. Para definir el tipo de datos que mostrará el código, usa el campo Salida y el lenguaje de definición de esquemas (SDL) de GraphQL. Los tipos de salida admitidos son String, Int, Float, Boolean y ID, que siguen la especificación SDL para especificar campos, listas y datos personalizados obligatorios.

Por ejemplo, para mostrar una cadena llamada giftMessage y un número llamado totalGifts:

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

Los comentarios son opcionales, pero se usarán para describir los datos en la interfaz de usuario de Flow. Para generar estos datos en el código de JavaScript, muestra un objeto que coincida con el tipo:

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

También puedes definir un tipo personalizado para mostrar datos más complejos. Por ejemplo, para mostrar un tipo llamado Gift que contiene una cadena llamada message y un número llamado 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!
}

Para acceder a estos datos en los pasos que siguen a esta acción, usa la variable con el nombre Ejecutar código, que se escribirá según el esquema Output que definas en la configuración de la acción Ejecutar código. Puedes usar esta variable en ambas condiciones y acciones.

Console.log

Puedes usar console.log para agregar datos de salida al registro de ejecución de flujo de trabajo de Flow con fines de resolución de problemas. Los datos de salida agregados estarán visibles en el registro de ejecución correspondiente al flujo de trabajo. Por ejemplo, los siguientes son válidos:

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

No puedes usar console.info, console.error ni otras funciones en la acción Ejecutar código.

Ejemplo

Puedes encontrar ejemplos de la acción Ejecutar código en el repositorio de ejemplos de Flow.

Limitaciones

La acción Ejecutar código tiene las siguientes limitaciones:

  • La acción Ejecutar código es compatible con ECMA2020 JavaScript. Sin embargo, no es compatible con las API NodeJS o CommonJS, ni con la importación de módulos.
  • El código no puede hacer llamadas http (fetch).
  • No pueden utilizarse las funciones aleatorias o basadas en el tiempo. Los datos de fecha, como scheduledAt o createdAt pueden pasarse como una entrada.
  • Console.log no registra datos en la consola del navegador.
  • No puedes agregar alias de metacampo directamente en la acción Ejecutar código. Consulta la sección de metacampos para saber cómo hacerlo.

Además, se aplican los siguientes límites:

  • La consulta de los datos de entrada tiene un límite de 5.000 caracteres.
  • El esquema de los datos de salida tiene un límite de 5.000 caracteres.
  • La carga de los datos de salida y los datos de salida de Console.log están limitados a 50 kb en total.
  • El código no puede tener más de 50.000 caracteres.
  • La duración total de la ejecución está limitada a cinco segundos.
  • El uso de memoria está limitado a 10 MB.

Hoja de ruta

El equipo de Flow planea agregar capacidades a la acción Ejecutar código a lo largo del tiempo. La siguiente tabla describe las mejoras planificadas y sus fechas de entrega estimadas.

Hoja de ruta para mejoras en la acción Ejecutar código
MejoraDescripciónEntrega estimada
RegistroUsa `console.log` con el objetivo de generar datos en el registro de ejecución para fines de resolución de problemas.Listo.
Llamadas a la API externasUsa la función de búsqueda de JavaScript para llamar a las API.Primer trimestre de 2025

Comentarios

La acción Ejecutar código es un nuevo tipo de paso en Shopify Flow. Si tienes comentarios y preguntas, envíalos en esta publicación de la comunidad de Flow.

¿No encuentras las respuestas que estás buscando? Estamos aquí para ayudarte.