Campos calculados: el resultado listo en el momento de la recolección
El Campo Calculado de HashData ejecuta una fórmula sobre las respuestas del formulario y entrega promedios, notas de auditoría, índices y conversiones en el momento de la recolección. La regla queda en el formulario, igual para todas las unidades, y nadie necesita rehacer la cuenta en una hoja de cálculo.
Auditoría de buenas prácticas
Pruebe: cambie las respuestas y vea cómo se recalcula la nota.
Campo calculado: nota de la auditoría
83%
25 de 30 puntos en 3 ítems evaluados. «No aplica» queda fuera de la cuenta.
function calculateValue() {
const items = findByTag('#item')
.filter(r => hasContent(r.number));
const puntos = items
.reduce((s, r) => s + r.number, 0);
return Math.round(
puntos / (items.length * 10) * 100);
}En resumen
El Campo Calculado es un elemento de los formularios de HashData que ejecuta una fórmula escrita en script sobre las respuestas anteriores y devuelve un número. Calcula promedios, sumas, notas porcentuales, índices de riesgo y conversiones en el momento de la recolección, ignora correctamente las preguntas en blanco y permite encadenar cálculos, como notas por sección seguidas de una nota general.
Por qué calcular dentro del formulario
En muchas operaciones, el formulario digital reemplaza al papel solo al recolectar. La cuenta se sigue haciendo después, en una hoja de cálculo: el promedio de las muestras de peso, la nota de la auditoría, la conversión del consumo en indicador. Cada paso manual abre espacio para errores de fórmula, de copia o de versión, y el resultado aparece días después.
Con el Campo Calculado, la regla de cálculo queda en el propio formulario. Quien recolecta ve el resultado en el momento, y quien analiza recibe el número ya calculado de la misma forma en todas las unidades. Si la regla cambia, se actualiza una sola vez.
Qué respuestas entran en el cálculo
Se puede usar cualquier respuesta con valor numérico. En las preguntas de opción, cada opción recibe un valor, lo que convierte marcas como «Conforme» y «No conforme» en puntos.
| Tipo de pregunta | Valor usado en el cálculo |
|---|---|
| Número entero, decimal y cantidad con emojis | El número ingresado |
| Selección única (menú, radio, botones) | El valor numérico de la opción elegida |
| Selección múltiple y ordenamiento | Los valores de las opciones marcadas y, en el ordenamiento, la posición de cada ítem |
| Evaluación (expresiones faciales, emojis) | El valor de la nota |
| Fecha, fecha y hora, tiempo | La fecha o la hora ingresada |
| Envío de archivos | La cantidad de archivos enviados |
| Texto, correo y geolocalización | Texto, etiquetas y coordenadas, para usar como condición en el cálculo |
| Otro campo calculado | El resultado de la fórmula anterior, para encadenar cálculos |
Cómo funciona el script
Toda fórmula es una función llamada calculateValue que devuelve un número o vacío (null). La sintaxis es la de JavaScript/TypeScript, y el editor sugiere los nombres de las preguntas y de las funciones con autocompletar (Ctrl+Espacio). Cada pregunta se accede por su nombre de campo dentro del objeto resp.
function calculateValue() {
return (resp.peso_muestra_1.number
+ resp.peso_muestra_2.number
+ resp.peso_muestra_3.number) / 3;
}Cálculo por tags
Las tags agrupan preguntas y hacen que la fórmula no dependa de nombres individuales. Marque todas las preguntas de peso con #peso y use una sola función. Si el formulario suma una nueva muestra, la fórmula sigue correcta sin cambios, y las respuestas en blanco no distorsionan el promedio.
function calculateValue() {
return avgByTag('#peso');
}| Función | Qué hace |
|---|---|
avgByTag | Promedio de las respuestas numéricas con las tags indicadas, ignorando las vacías |
sumByTag | Suma de las respuestas numéricas con las tags |
countByTag | Cantidad de respuestas con las tags |
maxByTag y minByTag | Mayor y menor valor entre las respuestas con las tags |
findByTag | Lista de las respuestas con las tags, para cálculos personalizados |
all | Lista de todas las respuestas anteriores al campo |
hasContent y isEmpty | Verifican si un valor está completo |
El Campo Calculado lee las preguntas ubicadas antes de él en el formulario. Por eso, debe ir después de todo lo que usa.
Biblioteca matemática
El script acepta variables intermedias, condiciones, funciones auxiliares (incluso recursivas) y la biblioteca matemática estándar: redondeos (round, floor, ceil, trunc), potencias y raíces (pow, sqrt, cbrt), logaritmos y exponenciales, funciones trigonométricas, max, min, abs y constantes como Math.PI y Math.E.
Ejemplos del día a día
Amplitud entre mediciones
La diferencia entre la mayor y la menor temperatura muestra si el proceso está estable, además del promedio.
function calculateValue() {
const mayor = maxByTag('#temperatura');
const menor = minByTag('#temperatura');
if (mayor === undefined || menor === undefined) {
return null;
}
return mayor - menor;
}Índice de riesgo
Probabilidad y severidad son preguntas de selección con valores de 1 a 5; el índice es el producto de las dos.
function calculateValue() {
const p = resp.probabilidad.number;
const s = resp.severidad.number;
if (!hasContent(p) || !hasContent(s)) {
return null;
}
return p * s;
}Conversión con factor
El consumo ingresado se convierte en el indicador que la empresa reporta. El factor queda documentado en la propia fórmula.
function calculateValue() {
const consumo = resp.consumo_kwh.number;
if (!hasContent(consumo)) {
return null;
}
const factor = 0.0385; // factor ilustrativo
return consumo * factor;
}Conteo de evidencias
Las preguntas de envío de archivo valen la cantidad de archivos adjuntos. La suma muestra cuántas fotos reunió la inspección.
function calculateValue() {
return sumByTag('#evidencia');
}Casos de uso por sector
| Sector | Cálculo | Cómo se arma |
|---|---|---|
| Industria alimentaria | Peso promedio y amplitud de muestras | Preguntas de peso con tag común; promedio, máximo y mínimo por tag |
| Calidad y auditoría | Nota por sección y nota general | Opciones con valor; un campo por sección y un campo final encadenado |
| Programa 5S | Puntuación por S y total del área | Una tag por S; suma por tag y suma general |
| Seguridad laboral | Índice de riesgo | Probabilidad × severidad a partir de dos selecciones |
| Sostenibilidad | Conversión del consumo en indicador | Consumo ingresado × factor definido en la fórmula |
| Agronegocio | Promedios y totales por parcela o lote | Mediciones de campo agregadas por tag |
| Logística | Variación de temperatura entre carga y entrega | Resta entre dos respuestas numéricas |
| Encuestas y satisfacción | Nota promedio de evaluación | Escalas y expresiones faciales con valor; promedio por tag |
Hoja de cálculo después o cálculo en la recolección
| Situación | Calcular en hoja de cálculo después | Campo Calculado de HashData |
|---|---|---|
| Cuándo aparece el resultado | Después de la exportación y la revisión | En el momento de la recolección |
| Regla entre unidades | Cada hoja puede tener una versión de la fórmula | Una única fórmula en el formulario |
| Preguntas en blanco | Promedio dividido por el total, con resultado distorsionado | Las funciones por tag ignoran las respuestas vacías |
| Cambio en la regla | Actualizar todas las hojas | Actualizar el formulario una vez |
| Auditoría de la cuenta | Fórmulas dispersas y celdas sobrescritas | Script único, comentado, junto al formulario |
Buenas prácticas
- Use nombres de campo claros en las preguntas usadas en fórmulas, como
peso_muestra_1. - Prefiera funciones por tag en lugar de listas fijas de preguntas.
- Use
avgByTagpara promedios, nunca una suma dividida por un número fijo. - Devuelva vacío cuando falte un dato, en lugar de cero, para no distorsionar los promedios en los informes.
- Ubique el campo después de todas las preguntas que usa.
- Pruebe con la simulación de respuestas antes de publicar, incluidas preguntas salteadas y en blanco.
- Comente factores y constantes en el propio script, con origen y fecha.
La referencia técnica completa, con todos los atributos y funciones, está en docs.hashdata.app.
Preguntas frecuentes
¿Qué es el Campo Calculado de HashData?
Es un elemento del formulario que ejecuta una fórmula escrita en script sobre las respuestas anteriores y devuelve un número, como un promedio, una nota de auditoría, un índice o una conversión.
¿Necesito saber programar para usarlo?
Las fórmulas simples, como promedios y sumas por tag, caben en una línea. Los cálculos más elaborados usan la sintaxis de JavaScript/TypeScript, y el editor ofrece autocompletar con los nombres de las preguntas y funciones.
¿Qué respuestas pueden entrar en el cálculo?
Números enteros y decimales, cantidad con emojis, selección única y múltiple con valores numéricos, evaluaciones con expresiones faciales o emojis, fechas y horas, y la cantidad de archivos enviados. El script también lee textos, etiquetas de opciones y coordenadas geográficas.
¿Qué pasa si una pregunta queda en blanco?
Las funciones por tag, como avgByTag, ignoran las respuestas vacías, y las funciones hasContent e isEmpty permiten devolver vacío cuando faltan datos. Así, una pregunta salteada no distorsiona el promedio.
¿Un campo calculado puede usar el resultado de otro?
Sí. El resultado de un campo de tipo fórmula queda disponible como valor numérico para los campos ubicados después de él, lo que permite calcular notas por sección y, luego, la nota general.
Vea sus cálculos funcionando en HashData
Le mostramos cómo convertir las hojas de nota, promedio y conversión de su operación en fórmulas dentro del formulario.