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).
Campo Descrição
Entrada Obrigatório. Uma consulta GraphQL para usar dados de etapas anteriores como entrada na ação Run code (Executar código).
Saída Obrigató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ódigo Obrigató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. Não é necessário fazer a paginação nem usar edges e nodes na consulta, pois o Flow cuida disso para você.

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
}

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.

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:

  • O código não pode importar módulos.
  • O código não pode fazer chamadas HTTP (fetch).
  • O código não pode usar console.log.
  • 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.

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.
  • O payload de dados de saída é limitado a 50 KB.
  • 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.

Plano

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)
Melhoria Descrição Entrega prevista
Corrigir bugs Correções e remoção de bugs Fevereiro de 2024
Registro Use `console.log` para exibir dados no log de execução para fins de solução de problemas. Início de abril de 2024
Chamadas externas à API Use a busca por JavaScript para chamar APIs. Terceiro trimestre de 2024

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.

Tudo pronto para começar a vender com a Shopify?

Experimente de graça