Pular para o conteúdo principal

Nó: Script

O nó Script executa um código escrito por você para calcular valores a partir dos dados dos nós anteriores — respostas de formulários, resultado de aprovações, saídas de outros scripts. Os resultados (texto, número, lista de e-mails ou lista de objetos) podem ser usados nos nós seguintes: no texto de e-mails, em condições, nos destinatários e em outros campos de texto.

O nó roda sozinho, sem aguardar nenhuma ação externa, e avança assim que o código termina.


Quando Usar​

Use o nó Script quando um valor que o processo precisa não existe pronto em nenhum formulário. Exemplos comuns:

  1. Cálculos — somar itens, aplicar desconto, calcular prazo ou valor total a partir de várias respostas.
  2. Montar textos — compor uma mensagem ou um assunto de e-mail com partes de respostas diferentes.
  3. Escolher destinatários — devolver uma lista de e-mails que depende das respostas (por exemplo, o gestor de cada filial).
  4. Tabelas em e-mails — devolver uma lista de linhas (item, quantidade, valor) para aparecer como tabela no corpo do e-mail.
  5. Decidir o caminho — calcular um número ou um texto para usar como condição em um nó Se/Senão.
Precisa saber programar

O código é escrito em TypeScript num editor com autocomplete. Para regras simples, como mostrar a resposta de um campo, prefira as variáveis normais do workflow: o nó Script é para quando é preciso calcular.


Configuração​

Clique sobre o nó no canvas do editor de workflow. O painel lateral tem três abas, Inputs, Outputs e Testar, e a área Código logo abaixo delas. Os atalhos Alt+I, Alt+O e Alt+T trocam de aba; eles não funcionam enquanto você digita em um campo ou no editor de código.

Inputs — o que o script lê​

Cada input dá ao script os dados de um nó anterior do workflow. Clique em Adicionar input e preencha:

CampoDescrição
Nó anteriorO nó de onde vêm os dados ("Selecione um nó anterior"). Só aparecem nós que vêm antes do Script no fluxo.
Nome da variávelO nome pelo qual o código acessa esses dados. Veja as regras de nomes.

O que o script recebe depende do tipo do nó escolhido:

Nó anteriorO que o script recebe
Gatilho de formulário, Solicitar Resposta de Formulário e Solicitar AcompanhamentoA resposta do formulário, com um item por pergunta (número, texto, data, opções escolhidas etc.) e informações da resposta. O autocomplete do editor mostra os campos reais do formulário.
AprovaçãoO nome do nó, o resultado da aprovação e o comentário de quem respondeu. Antes da resposta, só o nome.
Gatilho agendadoO nome do nó e o horário agendado.
Gatilho: Plano de Ação e Solicitar Plano de AçãoOs dados do plano de ação daquele nó.
Outro nó ScriptOs outputs que o outro script devolveu. É assim que um script usa o resultado de outro, inclusive listas de objetos.
Outros nós (Esperar, Enviar E-mail, Criar PDF etc.)O nome do nó e o horário em que o fluxo chegou a ele.
Nós de integração não servem como input

Webhook, Slack, Teams, Google Sheets, Excel, Google Drive e OneDrive não podem ser inputs, porque não produzem dados para o script ler.

Os dados são lidos na hora da execução

O formato dos dados reflete o que o nó anterior tem no momento em que o script roda. Se o formulário ou o plano de ação mudar depois, o dado recebido muda junto.

Outputs — o que o script devolve​

Cada output é um valor que o script entrega para os nós seguintes. Clique em Adicionar output, escolha o Tipo e dê um nome. Existem quatro tipos:

TipoO que éOnde pode ser usado
TextoUma frase ou palavra. Uma data devolvida como texto chega ao destino como texto no formato ISO (por exemplo, 2026-03-01T10:00:00.000Z).Textos em geral (e-mails, status, nome de arquivo) e condições.
NúmeroUm número válido. NaN e infinito são recusados.Textos em geral e condições.
Lista de e-mailsUma lista de endereços de e-mail.Destinatários dos nós de e-mail ("Adicionar de um nó Script").
Lista de objetosUma tabela: cada item da lista é uma linha, e você declara os atributos (colunas), cada um do tipo Texto ou Número.Só no corpo de um e-mail, como tabela, ou como input de outro nó Script.

Todo output declarado precisa voltar no resultado do script, com o tipo declarado. Se faltar um, vier com tipo diferente, ou se uma linha de uma lista não tiver algum atributo, o nó falha e a mensagem diz qual output ou linha causou o problema. O que o script devolver além dos outputs declarados é descartado.

Lista de objetos só no corpo do e-mail

A lista de objetos aparece como tabela no corpo dos cinco nós de e-mail: Aprovação, Enviar E-mail, Solicitar Resposta de Formulário, Solicitar Acompanhamento e Solicitar Plano de Ação. Ela não funciona no assunto, no status, nem em Slack, Teams, webhook, planilha ou Drive.

Código​

O código tem uma regra fixa de estrutura: a função calculateValue precisa ser a primeira coisa do código, com a assinatura abaixo. Funções e constantes auxiliares vão depois dela, nunca antes.

function calculateValue({ pedido, aprovacao }: Context): Result {
const total = calcularTotal(pedido);
return { total, resumo: `Total: ${total}` };
}

function calcularTotal(pedido: Context['pedido']): number {
// funções auxiliares ficam depois de calculateValue
return 0;
}
  • Entre as chaves da assinatura, liste os nomes dos inputs que o script usa (pedido, aprovacao).
  • A função devolve um objeto, com uma chave para cada output declarado.
  • try/catch, throw e Error são liberados: use-os para tratar situações esperadas e devolver um valor padrão.
  • Palavras bloqueadas, que impedem salvar o código: async, await, import, importScripts, eval, then, prototype, __proto__, setTimeout, setInterval, constructor, fetch e XMLHttpRequest. O script não acessa a internet, arquivos nem temporizadores.
  • O código pode ter até 100.000 caracteres.
  • Um erro de sintaxe é apontado com a linha do problema, e o workflow não pode ser publicado enquanto o código não compilar.
O código é compilado no salvamento automático

O código é compilado quando o rascunho é salvo, o que acontece sozinho a cada 30 segundos ou ao fechar o painel do nó. Se aparecer o aviso "Código ainda não compilado", aguarde o salvamento automático; se o aviso continuar, corrija os erros de sintaxe.


Regras de nomes​

NomeRegraPor quê
Input (nome da variável) e OutputSó letras sem acento, números e _; começa com letra; até 60 caracteres; não pode ser palavra reservada do JavaScript (como class ou return) nem uma das palavras bloqueadas do código (como then).O nome vira uma variável do código e uma chave usada nos textos ({{script...}}). Acento, hífen ou espaço quebrariam as duas coisas.
Atributo de uma lista de objetosLivre (pode ter espaço no meio e acento), exceto os caracteres , " & < > }, e sem espaço no início nem no fim.Esses caracteres atrapalham a lista de colunas da tabela do e-mail (,), o texto HTML (& < > ") e o fechamento da variável (}). Nomes iguais na mesma lista também não são aceitos.

Dois inputs, ou dois outputs, não podem ter o mesmo nome.


Usando os resultados nos nós seguintes​

Os outputs aparecem no grupo Script do seletor de variáveis dos campos de texto, e em dois outros lugares:

  • Textos — no assunto e no corpo dos nós de e-mail, no status do nó Definir Status e no nome do arquivo e no conteúdo do Criar PDF. O valor entra no texto no lugar da variável.
  • Condições — em uma regra com o tipo Script (nó, output, operador e valor). Servem outputs de tipo Texto ou Número. Na seta que sai do próprio Script, a regra também pode usar os outputs desse mesmo Script. Se o output mudar de tipo ou for removido depois, a regra mostra "O output mudou de tipo ou foi removido. Revise o output, o operador e o valor desta regra."
  • Destinatários — nos nós de e-mail, Adicionar de um nó Script usa um output do tipo E-mails. Endereços repetidos ou inválidos são ignorados, e o que foi descartado fica registrado no histórico.
  • Um texto no formato [rótulo](url), em um output do tipo Texto, vira um link clicável no corpo do e-mail (somente endereços http e https). No assunto e nos outros campos, o texto aparece como foi escrito.
  • Uma lista de objetos vira uma tabela no corpo do e-mail, com uma coluna por atributo. O seletor de variáveis sempre inclui a lista de colunas, na ordem em que você as selecionar. Uma lista vazia mostra só o cabeçalho.
Texto digitado pelo usuário é seguro

Textos vindos de respostas de formulário, ao entrarem no e-mail por um script, não executam código nem formatação indevida: o conteúdo é mostrado como texto.


Testar o script​

A aba Testar, ao lado de Inputs e Outputs, roda o script sem disparar o workflow. Ela só aparece para quem pode editar o workflow:

  1. Clique em Carregar contexto de exemplo. O campo Contexto é preenchido com um exemplo para cada input, no formato real do nó escolhido, usando os formulários que estão na tela.
  2. Ajuste os valores do exemplo para o caso que quer simular. Se você adicionar ou renomear um input depois, as chaves que faltam são acrescentadas ao contexto ao rodar, sem perder o que você já editou.
  3. Clique em Rodar. O Resultado aparece ao lado, ou a mensagem do erro, se houver.

Pontos de atenção:

  • O teste usa o código que está na tela, sem precisar salvar o rascunho antes. Erros de sintaxe, de assinatura ou palavras bloqueadas aparecem no Resultado.
  • O teste e a execução real têm o mesmo limite de 10 segundos por execução, e 64 MB de memória. Estourar o tempo mostra "O script excedeu o limite de 10 segundos".
  • O servidor aceita 2 testes ao mesmo tempo. Se houver mais, aparece "Há testes demais em andamento. Aguarde alguns segundos e tente de novo": basta tentar de novo. Os testes nunca atrasam os scripts dos workflows em execução, que têm suas próprias vagas.
  • Se o Contexto não for um JSON válido, aparece "O contexto informado não é um JSON válido."
  • O Contexto pode ter até 256 KB. Acima disso aparece "O contexto do teste passa do limite de 256 KB", e o teste nem começa.

Quando o script falha​

Se o script ultrapassar 10 segundos ou 64 MB, lançar um erro não tratado, devolver um output com tipo errado, ou devolver um resultado maior que 256 KB, o nó falha. Com isso:

  • A instância fica com status Falhou, e o responsável pelo workflow recebe um e-mail avisando, com o link para ver os eventos.
  • O erro aparece no histórico da instância, com a causa (por exemplo, qual output ou linha estava errado).
  • Os dados de entrada do script não são enviados para ferramentas de monitoramento de erros nem registrados no log do servidor, porque podem conter respostas de formulários.
Trate o que é esperado

Use try/catch para casos previsíveis (campo vazio, divisão por zero) e devolva um valor padrão. Assim a instância segue em frente em vez de falhar.


Quando o nó anterior não rodou​

O workflow só garante que existe um caminho do nó anterior até o Script, não que o nó já rodou. Isso acontece, por exemplo, quando o Script lê um nó do outro lado de um Se/Senão, ou quando uma aprovação ainda não foi respondida.

Nesses casos o dado chega vazio (o input chega como um objeto sem dados, o texto aparece em branco), e o nó que leu o dado mostra no histórico da instância o aviso "Dados vazios de nós que não rodaram antes", com o nome de cada nó. O workflow não falha por isso: trate o caso vazio no código.

Isso é diferente de uma falha ao ler o formulário ou a resposta (por exemplo, uma indisponibilidade momentânea do banco de dados): nesse caso o script não roda com dados vazios. A instância fica com status Falhou, o responsável pelo workflow recebe o e-mail de aviso, e o erro aparece no histórico como falha do script.


Boas Práticas​

  • Dê nomes que expliquem o valor: total_pedido e emails_gestores ajudam mais do que x e lista.
  • Declare só os inputs que usa: o script recebe só o que você configurou, e isso deixa o autocomplete mais limpo.
  • Teste antes de publicar: use Carregar contexto de exemplo, ajuste os valores com casos extremos (campo vazio, lista vazia) e rode.
  • Mantenha o script curto: cada script deve calcular um conjunto de valores. Para etapas diferentes, encadeie dois nós Script.
  • Combine com o nó Definir Status: um status antes do Script ajuda a saber, no painel de instâncias, em que etapa a instância está.