Campos calculados: o resultado pronto na hora da coleta
O Campo Calculado do HashData executa uma fórmula sobre as respostas do formulário e entrega médias, notas de auditoria, índices e conversões no momento em que a coleta acontece. A regra fica no formulário, igual para todas as unidades, e ninguém precisa refazer a conta em planilha.
Auditoria de boas práticas
Experimente: altere as respostas e veja a nota recalcular.
Campo calculado: nota da auditoria
83%
25 de 30 pontos em 3 itens avaliados. “Não se aplica” fica fora da conta.
function calculateValue() {
const itens = findByTag('#item')
.filter(r => hasContent(r.number));
const pontos = itens
.reduce((s, r) => s + r.number, 0);
return Math.round(
pontos / (itens.length * 10) * 100);
}Em resumo
O Campo Calculado é um elemento dos formulários do HashData que executa uma fórmula escrita em script sobre as respostas anteriores e devolve um número. Ele calcula médias, somas, notas percentuais, índices de risco e conversões no momento da coleta, ignora corretamente perguntas em branco e permite encadear cálculos, como notas por seção seguidas de uma nota geral.
Por que calcular dentro do formulário
Em muitas operações, o formulário digital substitui o papel só na hora de coletar. A conta continua sendo feita depois, numa planilha: a média das amostras de peso, a nota da auditoria, a conversão de consumo em indicador. Cada etapa manual abre espaço para erro de fórmula, de cópia ou de versão, e o resultado só aparece dias depois.
Com o Campo Calculado, a regra de cálculo fica no próprio formulário. Quem coleta vê o resultado na hora, e quem analisa recebe o número já calculado do mesmo jeito em todas as unidades. Se a regra mudar, ela é atualizada uma vez só.
Quais respostas entram no cálculo
Qualquer resposta com valor numérico pode ser usada. Nas perguntas de escolha, cada opção recebe um valor, o que transforma marcações como “Conforme” e “Não conforme” em pontos.
| Tipo de pergunta | Valor usado no cálculo |
|---|---|
| Número inteiro, decimal e quantidade com emojis | O número informado |
| Seleção única (menu, rádio, botões) | O valor numérico da opção escolhida |
| Seleção múltipla e ordenação | Os valores das opções marcadas e, na ordenação, a posição de cada item |
| Avaliação (expressões faciais, emojis) | O valor da nota |
| Data, data e hora, tempo | A data ou a hora informada |
| Envio de arquivos | A quantidade de arquivos enviados |
| Texto, e-mail e geolocalização | Texto, rótulos e coordenadas, para usar como condição no cálculo |
| Outro campo calculado | O resultado da fórmula anterior, para encadear cálculos |
Como funciona o script
Toda fórmula é uma função chamada calculateValue que devolve um número ou vazio (null). A sintaxe é a de JavaScript/TypeScript, e o editor sugere os nomes das perguntas e das funções com autocompletar (Ctrl+Espaço). Cada pergunta é acessada pelo seu nome de campo dentro do objeto resp.
function calculateValue() {
return (resp.peso_amostra_1.number
+ resp.peso_amostra_2.number
+ resp.peso_amostra_3.number) / 3;
}Cálculo por tags
As tags agrupam perguntas e deixam a fórmula independente de nomes individuais. Marque todas as perguntas de peso com #peso e use uma única função. Se o formulário ganhar uma nova amostra, a fórmula continua certa sem alteração, e respostas em branco não distorcem a média.
function calculateValue() {
return avgByTag('#peso');
}| Função | O que faz |
|---|---|
avgByTag | Média das respostas numéricas com as tags indicadas, ignorando as vazias |
sumByTag | Soma das respostas numéricas com as tags |
countByTag | Quantidade de respostas com as tags |
maxByTag e minByTag | Maior e menor valor entre as respostas com as tags |
findByTag | Lista das respostas com as tags, para cálculos personalizados |
all | Lista de todas as respostas anteriores ao campo |
hasContent e isEmpty | Verificam se um valor está preenchido |
O Campo Calculado lê as perguntas posicionadas antes dele no formulário. Por isso, ele deve vir depois de tudo o que usa.
Biblioteca matemática
O script aceita variáveis intermediárias, condições, funções auxiliares (inclusive recursivas) e a biblioteca matemática padrão: arredondamentos (round, floor, ceil, trunc), potência e raízes (pow, sqrt, cbrt), logaritmos e exponenciais, funções trigonométricas, max, min, abs e constantes como Math.PI e Math.E.
Exemplos do dia a dia
Amplitude entre medições
A diferença entre a maior e a menor temperatura mostra se o processo está estável, além da média.
function calculateValue() {
const maior = maxByTag('#temperatura');
const menor = minByTag('#temperatura');
if (maior === undefined || menor === undefined) {
return null;
}
return maior - menor;
}Índice de risco
Probabilidade e severidade são perguntas de seleção com valores de 1 a 5; o índice é o produto das duas.
function calculateValue() {
const p = resp.probabilidade.number;
const s = resp.severidade.number;
if (!hasContent(p) || !hasContent(s)) {
return null;
}
return p * s;
}Conversão com fator
O consumo informado vira o indicador que a empresa reporta. O fator fica documentado na própria fórmula.
function calculateValue() {
const consumo = resp.consumo_kwh.number;
if (!hasContent(consumo)) {
return null;
}
const fator = 0.0385; // fator ilustrativo
return consumo * fator;
}Contagem de evidências
Perguntas de envio de arquivo valem a quantidade de arquivos anexados. A soma mostra quantas fotos a inspeção reuniu.
function calculateValue() {
return sumByTag('#evidencia');
}Casos de uso por segmento
| Segmento | Cálculo | Como é montado |
|---|---|---|
| Indústria de alimentos | Peso médio e amplitude de amostras | Perguntas de peso com tag comum; média, máximo e mínimo por tag |
| Qualidade e auditoria | Nota por seção e nota geral | Opções com valor; um campo por seção e um campo final encadeado |
| Programa 5S | Pontuação por senso e total da área | Uma tag por senso; soma por tag e soma geral |
| Segurança do trabalho | Índice de risco | Probabilidade × severidade a partir de duas seleções |
| Sustentabilidade | Conversão de consumo em indicador | Consumo informado × fator definido na fórmula |
| Agronegócio | Médias e totais por talhão ou lote | Medições de campo agregadas por tag |
| Logística | Variação de temperatura entre carregamento e entrega | Subtração entre duas respostas numéricas |
| Pesquisa e satisfação | Nota média de avaliação | Escalas e expressões faciais com valor; média por tag |
Planilha depois ou cálculo na coleta
| Situação | Calcular em planilha depois | Campo Calculado do HashData |
|---|---|---|
| Quando o resultado aparece | Depois da exportação e da conferência | No momento da coleta |
| Regra entre unidades | Cada planilha pode ter uma versão da fórmula | Uma única fórmula no formulário |
| Perguntas em branco | Média dividida pelo total, com resultado distorcido | Funções por tag ignoram respostas vazias |
| Mudança na regra | Atualizar todas as planilhas | Atualizar o formulário uma vez |
| Auditoria da conta | Fórmulas espalhadas e células sobrescritas | Script único, comentado, junto do formulário |
Boas práticas
- Dê nomes de campo claros às perguntas usadas em fórmulas, como
peso_amostra_1. - Prefira funções por tag a listas fixas de perguntas.
- Use
avgByTagpara médias, nunca soma dividida por um número fixo. - Devolva vazio quando faltar dado, em vez de zero, para não distorcer médias em relatórios.
- Posicione o campo depois de todas as perguntas que ele usa.
- Teste com a simulação de respostas antes de publicar, incluindo perguntas puladas e em branco.
- Comente fatores e constantes no próprio script, com origem e data.
A referência técnica completa, com todos os atributos e funções, está em docs.hashdata.app.
Perguntas frequentes
O que é o Campo Calculado do HashData?
É um elemento do formulário que executa uma fórmula escrita em script sobre as respostas anteriores e devolve um número, como uma média, uma nota de auditoria, um índice ou uma conversão.
Preciso saber programar para usar?
Fórmulas simples, como médias e somas por tag, cabem em uma linha. Cálculos mais elaborados usam a sintaxe de JavaScript/TypeScript, e o editor oferece autocompletar com os nomes das perguntas e funções.
Quais respostas podem entrar no cálculo?
Números inteiros e decimais, quantidade com emojis, seleção única e múltipla com valores numéricos, avaliações por expressões faciais ou emojis, datas e horas, e a quantidade de arquivos enviados. O script também lê textos, rótulos de opções e coordenadas geográficas.
O que acontece se uma pergunta ficar em branco?
As funções por tag, como avgByTag, ignoram respostas vazias, e as funções hasContent e isEmpty permitem devolver vazio quando faltam dados. Assim, uma pergunta pulada não distorce a média.
Um campo calculado pode usar o resultado de outro?
Sim. O resultado de um campo do tipo fórmula fica disponível como valor numérico para os campos posicionados depois dele, o que permite calcular notas por seção e, em seguida, a nota geral.
Veja seus cálculos funcionando no HashData
Mostramos como transformar as planilhas de nota, média e conversão da sua operação em fórmulas dentro do formulário.