Executar código

A acción Executar código executa JavaScript. Podes pasar datos de pasos anteriores do fluxo de traballo como entrada para a acción Executar código e devolver valores para que se utilicen en pasos posteriores.

Campos

A acción Executar código contén os seguintes campos.

Campos que se utilizan na acción Executar código.
CampoDescrición
EntradaObrigatorio. Unha consulta GraphQL para usar datos de pasos anteriores como entrada para a acción Executar código.
SaídaObrigatorio. Unha representación dos datos que debe devolver a acción, definidos na linguaxe de definición de esquemas (SDL) de GraphQL.
CódigoObrigatorio. O JavaScript que executará a acción Executar código.

Datos de entrada

Os datos de entrada pódense pasar dos pasos que teñen lugar antes da acción Executar código. Para incluír estes datos, podes escribir unha consulta GraphQL no campo Entrada. Os datos que devolve a consulta estarán dispoñibles como o argumento input da función marcada con export default, que por convención chámase main.

A consulta de entrada é unha consulta dos datos da contorna de Flow, non unha consulta para a Admin API de Shopify. Polo tanto, non podes inserir unha consulta de Shopify nos datos de entrada. Ademais, Flow xestiona os edges e os nodes da consulta, co cal non fai falta que os engadas, nin tampouco ningunha outra sintaxe de paxinación.

Un exemplo de entrada que obtén unha nota de pedido e o título dun artigo de liña:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Estes datos convértense nunha variable input que se pode usar no código:

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

As entradas tamén se poden desestruturar na sinatura da función:

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

Metacampos

Para acceder aos valores de metacampos individuais en Executar código, primeiro debes engadir o metacampo aos datos da contorna de Flow. Isto pódese facer en calquera acción ou condición que non sexa Executar código. Por exemplo, podes engadir unha acción Rexistrar saída e logo seguir as instrucións para engadir o metacampo.

Despois de engadir un metacampo á contorna do fluxo de traballo, podes acceder a el en Executar código. Por exemplo, supoñamos que engades un metacampo de pedido co alias giftMessage. Entón, podes acceder a el na túa consulta de entrada:

{
  order {
    giftMessage {
      value
    }
  }
}

Datos de saída

A acción Executar código pode devolver datos personalizados. Para definir o tipo dos datos que o código vai devolver, usa o campo Saída e a Linguaxe de definición de esquemas (SDL) de GraphQL. Os tipos de saída compatibles son String, Int, Float, Boolean e ID, que seguen a especificación SDL de como especificar os campos obrigatorios, as listas e os datos personalizados.

Por exemplo, para devolver unha cadea chamada giftMessage e un número chamado totalGifts:

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

Os comentarios son opcionais, pero usaranse para describir os datos na interface de usuario de Flow. Para dar saída a estes datos no código JavaScript, devolve un obxecto que coincida co tipo:

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

Tamén podes definir un tipo personalizado para devolver datos máis complexos. Por exemplo, para devolver un tipo chamado Gift que conteña unha cadea chamada message e un número chamado 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 estes datos nos pasos que seguen a esta acción, usa a variable chamada Executar código, que estará definida de acordo co esquema Output que fixeses na configuración da acción Executar código. Podes usar esta variable tanto nas condicións coma nas accións.

Console.log

Podes usar console.log para dar saída aos datos cara ao rexistro de execucións de fluxo de traballo de Flow con fins de resolución de problemas. A saída será visible no Rexistro de execucións para o fluxo de traballo. Por exemplo, os seguintes 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,
  };
}

Non podes usar console.info, console.error nin outras funcións na acción Executar código.

Exemplo

Podes atopar exemplos da acción de código no repositorio de exemplos de Flow.

Limitacións

A acción Executar código ten as seguintes limitacións:

  • A acción Executar código é compatible con ECMA2020 JavaScript. Non é compatible coas API de NodeJS ou CommonJS nin coa importación de módulos.
  • O teu código non pode facer chamadas HTTP (fetch).
  • Non se poden usar funcións aleatorias nin baseadas no reloxo. Os datos de data, como scheduledAt ou createdAt, poden pasarse como entrada.
  • Console.log non se rexistra na consola do navegador.
  • Para aforrar no tamaño da carga útil, a carga útil de datos de saída só devolve as variables utilizadas nos pasos posteriores.
  • Non podes engadir un alias de metacampo directamente na acción Executar código. Para facelo, revisa a sección de Metacampos desta páxina.

Ademais, aplícanse os seguintes límites:

  • A consulta de datos de entrada está limitada a 5000 caracteres.
  • O esquema de datos de saída está limitado a 5000 caracteres.
  • A carga útil de datos de saída e a saída de Console.log teñen un límite combinado de 50 KB.
  • O código non pode ter máis de 50 000 caracteres.
  • A duración total da execución está limitada a 5 segundos.
  • O uso da memoria está limitado a 10 MB.

Modelos

Engadir artigo gratuíto (cun 100 % de desconto) aos novos pedidos

Este modelo engade un artigo gratuíto e con desconto aos novos pedidos cando o artigo está en stock. Comproba o inventario, aplica un desconto do 100 % e actualiza o pedido sen notificalo ao cliente. Este fluxo de traballo pode axudar a engadir a automatización nos seguintes escenarios:

  • Mellorar a satisfacción do cliente incluíndo un artigo gratuíto sorpresa no seu pedido.
  • Promocionar produtos novos ou menos coñecidos engadíndoos como mostras gratuítas nos pedidos.
  • Optimizar as promocións ao automatizar a inclusión e os descontos dos artigos gratuítos.

Ver modelo

Cancelar devolucións inactivas

Cancela automaticamente unha devolución que non se reembolsou nin se devolveu ao inventario durante certo período de tempo. Ver modelo

Converter etiquetas cun prefixo nun metacampo de produto usando a acción Executar código

Este fluxo de traballo collerá as etiquetas que empecen por un prefixo como 'color:' e as engadirá a unha lista de metacampos do produto. Usa a acción Executar código para analizar as etiquetas e os artigos existentes na lista de metacampos. O fluxo de traballo execútase cando se crea un produto, pero pode executarse manualmente nos produtos xa existentes. Ver modelo

Enviar notificación cando un cliente fai un pedido de múltiples variantes dun produto

Recibe unha notificación por correo electrónico cando un cliente faga un pedido de múltiples variantes do mesmo produto. Ver modelo

Enviar notificación cando o pedido conteña un lote

Este fluxo de traballo empeza cando se crea un pedido e comproba se algún dos produtos do pedido se mercou como parte dun lote. De ser así, envíase un correo electrónico interno cos detalles do lote. Ademais, podes usar este fluxo de traballo como punto de partida para calquera caso de uso que precise detectar a presenza dun lote nun pedido. Ver modelo

Etiquetar pedidos coa campaña UTM asociada

Engade etiquetas a aqueles pedidos que conteñan os nomes de calquera campaña UTM asociada. Ver modelo