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.
Campo Descripción
Entrada Obligatorio. Una consulta de GraphQL para usar datos de pasos anteriores como entrada para la acción Ejecutar código.
Salida Obligatorio. Una representación de los datos que la acción mostrará, definida en el lenguaje de definición de esquemas (SDL) de GraphQL.
Código Obligatorio. El JavaScript que la acción Ejecutar código ejecutará.

Datos de entrada

Los datos de entrada se pueden pasar desde los pasos que tienen lugar antes de la acción Ejecutar código. Para incluir estos datos, puedes escribir una consulta de GraphQL en el campo Entrada. Los datos que se muestran de la consulta estarán disponibles como el argumento input para la función marcada con export default. No necesitas gestionar la paginación ni usar edges y nodes en la consulta, ya que Flow los gestiona por ti.

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
}

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. 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.

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:

  • El código no puede importar módulos.
  • El código no puede hacer llamadas http (fetch).
  • Tu código no puede usar console.log
  • No pueden utilizarse las funciones aleatorias o basadas en el tiempo. Los datos de fecha, como scheduledAt o createdAt pueden pasarse como una entrada.

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 datos de salida está limitada a 50 KB.
  • 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
Mejora Descripción Entrega estimada
Reparación de errores Reparaciones de errores y limpieza Febrero de 2024
Registro Usa `console.log` con el objetivo de generar datos en el registro de ejecución para fines de resolución de problemas. Principios de abril de 2024
Llamadas a la API externas Usa la función de búsqueda de JavaScript para llamar a las API. Tercer trimestre de 2024

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.

¿Estás listo/a para comenzar a vender con Shopify?

Prueba gratis