Fórmulas
Los campos de fórmula en los Copera Boards te permiten crear columnas calculadas que derivan sus valores automáticamente a partir de otros datos de tus filas. Impulsados por el Copera Formula Engine — un lenguaje de fórmulas dedicado con su propio analizador y evaluador — puedes construir desde aritmética simple hasta lógica condicional compleja y cálculos de fechas.
Resumen del Lenguaje de Fórmulas
Las fórmulas de Copera usan una sintaxis similar a la de las fórmulas de hoja de cálculo. Cada fórmula se evalúa por fila, con acceso a todos los valores de columna de esa misma fila. El motor de fórmulas admite:
- Operadores aritméticos:
+,-,*,/para operaciones matemáticas - Concatenación de cadenas:
¶ unir valores de texto - Operadores de comparación:
=,!=,>,<,>=,<= - Operadores lógicos:
AND,OR,NOTpara combinar condiciones - Referencias a campos: Referencia otras columnas envolviendo el nombre de la columna entre llaves, p. ej.,
{Column Name} - Funciones anidadas: Las funciones se pueden usar como argumentos de otras funciones
Sintaxis Básica
{Price} * {Quantity}
Esta fórmula multiplica el valor de la columna "Price" por la columna "Quantity" en cada fila.
IF({Status} = "Done", "Complete", "Pending")
Esta fórmula devuelve "Complete" cuando la columna Status es igual a "Done", y "Pending" en caso contrario.
Referencia de Funciones
El Copera Formula Engine ofrece más de 100 funciones organizadas en las siguientes categorías. A continuación se presenta una referencia de las funciones de uso más común.
Funciones Matemáticas
| Función | Descripción | Ejemplo |
|---|---|---|
ABS(number) | Valor absoluto | ABS({Balance}) |
CEIL(number) | Redondea hacia arriba al entero más cercano | CEIL({Score} / 10) |
FLOOR(number) | Redondea hacia abajo al entero más cercano | FLOOR({Price}) |
ROUND(number, decimals) | Redondea a un número de decimales determinado | ROUND({Average}, 2) |
MIN(a, b, ...) | Valor más pequeño | MIN({Estimate}, {Budget}) |
MAX(a, b, ...) | Valor más grande | MAX({Score1}, {Score2}) |
SUM(a, b, ...) | Suma de valores | SUM({Q1}, {Q2}, {Q3}, {Q4}) |
AVERAGE(a, b, ...) | Media aritmética | AVERAGE({Test1}, {Test2}) |
MOD(number, divisor) | Resto de una división | MOD({Row Number}, 2) |
POWER(base, exponent) | Elevar a una potencia | POWER({Side}, 2) |
SQRT(number) | Raíz cuadrada | SQRT({Area}) |
Funciones de Texto
| Función | Descripción | Ejemplo |
|---|---|---|
CONCAT(a, b, ...) | Une valores de texto | CONCAT({First Name}, " ", {Last Name}) |
LEFT(text, count) | Extrae desde el inicio | LEFT({Code}, 3) |
RIGHT(text, count) | Extrae desde el final | RIGHT({Phone}, 4) |
MID(text, start, count) | Extrae desde el medio | MID({ID}, 2, 4) |
LEN(text) | Recuento de caracteres | LEN({Description}) |
LOWER(text) | Convierte a minúsculas | LOWER({Email}) |
UPPER(text) | Convierte a mayúsculas | UPPER({Code}) |
TRIM(text) | Elimina espacios al inicio y al final | TRIM({Input}) |
REPLACE(text, old, new) | Reemplaza ocurrencias | REPLACE({URL}, "http", "https") |
SEARCH(find, text) | Encuentra la posición de una subcadena | SEARCH("@", {Email}) |
Funciones de Fecha
El motor de fórmulas se integra con una extensa biblioteca de fechas, que te da acceso a potentes funciones de manipulación y comparación de fechas.
| Función | Descripción | Ejemplo |
|---|---|---|
TODAY() | Fecha actual | TODAY() |
NOW() | Fecha y hora actuales | NOW() |
YEAR(date) | Extrae el año | YEAR({Created}) |
MONTH(date) | Extrae el mes (1-12) | MONTH({Due Date}) |
DAY(date) | Extrae el día del mes | DAY({Birthday}) |
WEEKDAY(date) | Día de la semana (0-6) | WEEKDAY({Start Date}) |
WEEKNUM(date) | Número de semana del año | WEEKNUM({Created}) |
QUARTER(date) | Trimestre (1-4) | QUARTER({Close Date}) |
DATEADD(date, count, unit) | Suma tiempo a una fecha | DATEADD({Start}, 14, "days") |
DATEDIFF(date1, date2, unit) | Diferencia entre fechas | DATEDIFF({Start}, {End}, "days") |
IS_BEFORE(date1, date2) | Comprueba si date1 es anterior a date2 | IS_BEFORE({Due Date}, TODAY()) |
IS_AFTER(date1, date2) | Comprueba si date1 es posterior a date2 | IS_AFTER({Due Date}, TODAY()) |
IS_SAME_DAY(date1, date2) | Comprueba si es el mismo día | IS_SAME_DAY({Created}, TODAY()) |
IS_TODAY(date) | Comprueba si la fecha es hoy | IS_TODAY({Due Date}) |
IS_WEEKEND(date) | Comprueba si la fecha cae en fin de semana | IS_WEEKEND({Delivery Date}) |
START_OF_MONTH(date) | Primer día del mes | START_OF_MONTH({Date}) |
END_OF_MONTH(date) | Último día del mes | END_OF_MONTH({Date}) |
START_OF_WEEK(date) | Primer día de la semana | START_OF_WEEK({Date}) |
END_OF_WEEK(date) | Último día de la semana | END_OF_WEEK({Date}) |
ADD_BUSINESS_DAYS(date, days) | Suma solo días hábiles | ADD_BUSINESS_DAYS({Start}, 5) |
DIFF_BUSINESS_DAYS(d1, d2) | Días hábiles entre fechas | DIFF_BUSINESS_DAYS({Start}, {End}) |
Funciones Lógicas
| Función | Descripción | Ejemplo |
|---|---|---|
IF(condition, then, else) | Valor condicional | IF({Amount} > 1000, "High", "Low") |
SWITCH(expr, val1, result1, ...) | Compara contra varios valores | SWITCH({Priority}, "P0", "Critical", "P1", "High", "Normal") |
AND(a, b, ...) | Verdadero si todas las condiciones son verdaderas | AND({Complete}, {Approved}) |
OR(a, b, ...) | Verdadero si cualquier condición es verdadera | OR({Urgent}, {Overdue}) |
NOT(value) | Invierte un booleano | NOT({Archived}) |
ISBLANK(value) | Comprueba si está vacío | ISBLANK({Notes}) |
Ejemplos Comunes de Fórmulas
Concatenar Nombres
CONCAT({First Name}, " ", {Last Name})
Combina las columnas de nombre y apellido con un espacio en medio.
Calcular Días Hasta el Vencimiento
DATEDIFF(TODAY(), {Due Date}, "days")
Devuelve la cantidad de días restantes hasta la fecha de vencimiento. Los valores negativos indican elementos vencidos.
Etiquetas de Estado Condicionales
IF(IS_BEFORE({Due Date}, TODAY()), "Overdue",
IF(DATEDIFF(TODAY(), {Due Date}, "days") <= 3, "Due Soon", "On Track"))
Devuelve "Overdue" para los elementos vencidos, "Due Soon" para los que vencen dentro de 3 días y "On Track" para todo lo demás.
Cálculo de Porcentaje
ROUND({Completed Tasks} / {Total Tasks} * 100, 1)
Calcula el porcentaje de finalización redondeado a un decimal.
Días Hábiles Restantes
DIFF_BUSINESS_DAYS(TODAY(), {Deadline})
Calcula la cantidad de días laborables (excluyendo los fines de semana) entre hoy y una fecha límite.
Manejo de Errores
Cuando una fórmula contiene errores, Copera muestra un indicador de error en la celda en lugar de un valor. Entre los errores comunes están:
- Errores de sintaxis — Paréntesis sin pareja, operadores faltantes o nombres de función no reconocidos.
- Discrepancias de tipo — Intentar realizar aritmética sobre valores de texto u operaciones de fecha sobre números.
- Referencias nulas — Referenciar una columna que no tiene valor en la fila actual. Usa
ISBLANK()para manejar con elegancia los campos opcionales. - División por cero — Dividir por una columna que contiene cero. Envuélvela con un
IFpara comprobar:IF({Total} = 0, 0, {Part} / {Total}).
El editor de fórmulas muestra una vista previa en vivo del resultado a medida que escribes, lo que facilita detectar y corregir errores antes de guardar.
Creación de Fórmulas Asistida por IA
Si no estás seguro de cómo escribir una fórmula, Copera ofrece un asistente de fórmulas impulsado por IA. Describe lo que quieres calcular en lenguaje natural y el asistente generará una fórmula para ti. Puedes revisar, editar y refinar la sugerencia antes de aplicarla a tu columna.
Próximos Pasos
- Aprende sobre los Campos Calculados para entender en profundidad los campos de Fórmula, Función y Tracker.
- Configura Automations que se desencadenen según los resultados de las fórmulas.
- Usa los Filtros y Ordenamiento para filtrar filas por los valores de las columnas de fórmula.