Executar código

A ação Run code (Executar código) executa JavaScript. É possível enviar dados gerados em etapas anteriores do fluxo de trabalho como entrada na ação Run code (Executar código) e receber como saída os valores a serem usados nas etapas posteriores.

Campos

A ação Run code (Executar código) contém os campos a seguir.

Campos usados na ação "Run code" (Executar código).
CampoDescrição
EntradaObrigatório. Uma consulta GraphQL para usar dados de etapas anteriores como entrada na ação Run code (Executar código).
SaídaObrigatório. Uma representação dos dados a serem retornados pela ação, na linguagem de definição de esquema (SDL, na sigla em inglês) do GraphQL.
CódigoObrigatório. O JavaScript que a ação Run code (Executar código) vai executar.

Dados de entrada

É possível usar dados de entrada de etapas que ocorrem antes da ação Run code ("Executar código"). Para incluí-los, escreva uma consulta GraphQL no campo Definir entradas. Os dados retornados pela consulta ficarão disponíveis como o argumento input para a função marcada com export default, chamada de main por convenção.

A consulta inserida é para dados do ambiente Flow, e não para a API Shopify Admin. Por isso, não é possível inserir uma consulta da Shopify nos dados de entrada. Além disso, o Flow manipula edges e nodes na consulta, então você não precisa adicioná-los nem usar outra sintaxe de paginação.

Confira um exemplo de entrada que providencia as observações do pedido e o título de um item de linha:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Esses dados são convertidos em uma variável input que pode ser usada no código:

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

Também é possível desestruturar as entradas na assinatura da função:

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

Metacampos

Para acessar valores de metacampo único na ação "Run code", primeiro adicione o metacampo aos dados do ambiente do Flow. Isso pode ser feito em qualquer ação ou estado que não seja "Run code". Por exemplo, você pode adicionar uma ação Saída de log e depois seguir as instruções para adicionar o metacampo.

Depois que um metacampo tiver sido adicionado ao ambiente de fluxo de trabalho, você poderá acessá-lo em "Run code". Por exemplo, suponha que você adicionou um metacampo de pedido com o alias de giftMessage. Em seguida, acesse-o na consulta de entrada:

{
  order {
    giftMessage {
      value
    }
  }
}

Dados de saída

A ação Run code (Executar código) pode retornar dados personalizados. Para definir o tipo de dados que o código vai retornar, use o campo Definir saídas e a linguagem de definição de esquema (SDL, na sigla em inglês) do GraphQL. Por exemplo, para retornar uma string giftMessage e um número totalGifts:

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

Os comentários são opcionais, mas serão usados para descrever os dados na IU do Flow. Para gerar a saída dos dados no código JavaScript, retorne um objeto que coincida com o tipo:

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

Também é possível definir um tipo personalizado para retornar dados mais complexos. Por exemplo, para retornar um tipo Gift que contenha uma string message e um número 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 acessar esses dados nas etapas posteriores à ação, use a variável Run code (Executar código), que será digitada de acordo com o esquema Output definido na configuração da ação Run code (Executar código). Essa variável pode ser usada em condições e em ações.

Console.log

Use o console.log para enviar dados ao log de execução do fluxo de trabalho do Flow para fins de solução de problemas. A saída ficará visível no log de execução do fluxo de trabalho. Por exemplo, são 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,
  };
}

Não foi possível usar console.info, console.error ou outras funções na ação Run code (" Executar código").

Exemplo

Confira exemplos da ação "Run code" (Executar código) no repositório de exemplos do Flow.

Limitações

A ação Run code (Executar código) tem limitações, como:

  • A ação "Run code" ("Executar código") é compatível com JavaScript ECMA2020 e não aceita APIs NodeJS, CommonJS ou de importação de módulos.
  • O código não pode fazer chamadas HTTP (fetch).
  • Não é possível usar funções que dependem de aleatoriedade ou do tempo. Os dados de data, como scheduledAt ou createdAt, podem ser passados como entrada.
  • Console.log não faz login no console do navegador.
  • Não é possível adicionar alias de metacampo diretamente na ação "Run code". Veja a seção de metacampos para saber como conseguir isso.

Além disso, estes limites são aplicados:

  • A consulta de dados de entrada é limitada a 5 mil caracteres.
  • O esquema de dados de saída é limitado a 5 mil caracteres.
  • A capacidade de pagamento e a saída de Console.log são limitadas a 50 kB combinados.
  • O código não pode ter mais de 50 mil caracteres.
  • A duração total da execução é limitada a 5 segundos.
  • O uso de memória é limitado a 10 MB.

Roteiro

A equipe do Flow tem planos para adicionar funcionalidades à ação Run code (Executar código) ao longo do tempo. Confira na tabela a seguir as melhorias programadas e as estimativas para datas de entrega.

Plano para melhorias na ação "Run code" (Executar código)
MelhoriaDescriçãoEntrega prevista
RegistroUse `console.log` para exibir dados no log de execução para fins de solução de problemas.Feito.
Chamadas externas à APIUse a busca por JavaScript para chamar APIs.1º trim. de 2025

Feedback

A ação "Run code" (Executar código) é um novo tipo de etapa no Shopify Flow. Caso você queira dar feedback ou fazer perguntas, comente nesta postagem na comunidade do Flow.

Não encontrou as respostas que está procurando? Estamos sempre à disposição para ajudar você.