Cada expresión es código PHP que se evalúa con eval() y debe devolver el valor final del campo. Para referirte a un valor de la fila origen, escribe su nombre de cabecera entre llaves, por ejemplo {Importe} (equivale a acceder al valor de la columna "Importe" de esa fila).
Concatenar texto: usa el operador . de PHP.
{Nombre} . ' ' . {Apellidos}
encadena(x1, x2, nexo): une x1 y x2 con el separador "nexo" solo si AMBOS tienen contenido; si alguno está vacío, simplemente los concatena sin el separador.
encadena({Calle}, {Numero}, ', ')
etiqueta(pre, x, post): devuelve "pre . x . post" solo si x tiene contenido; si x está vacío, devuelve una cadena vacía.
etiqueta('(', {Telefono}, ')')
esnulo(x, valor): devuelve x si tiene contenido, o "valor" (el valor por defecto) si x está vacío.
esnulo({Descuento}, 0)
Condicionales sencillos: usa el operador ternario ? :.
{Importe} > 0 ? 'positivo' : 'negativo'
Condicionales con if(): como la expresión debe ser un único valor, envuelve el if en una función anónima que se ejecuta al momento (capturando $c, la fila origen, con use ($c)):
(function() use ($c) {
if ({Importe} > 0) {
return 'positivo';
}
return 'negativo';
})()
Fechas y horas para Supabase: nunca uses la fecha/hora tal cual viene del fichero -- convierte siempre con una de estas 6 funciones, que no dependen de dónde esté físicamente el servidor (no usan zona horaria ni idioma, así que dan el mismo resultado siempre y no fallan al insertar en Supabase). Usa las que empiezan por Excel2Supa cuando el origen es un .xlsx (la fecha llega como un número de serie de Excel) y las que empiezan por TXT2String cuando el origen es un .txt/.csv con la fecha ya escrita como texto "31/12/2026" o "31/12/26", hora "6:23:22" o fecha y hora "21/12/2026 23:59:59" (sin necesidad de ceros de relleno; el año puede venir con 2 o 4 dígitos -- con 2 dígitos se completa como 00-68 → 2000-2068, 69-99 → 1969-1999).
Excel2SupaFecha({fecha}) · Excel2SupaHora({hora}) · Excel2SupaTimeStamp({fecha_hora})
TXT2SupaFecha({fecha}) · TXT2SupaHora({hora}) · TXT2SupaFechaHora({fecha_hora})
Usa "Tipo dato" date con las de Fecha, time con las de Hora y timestamp con las de FechaHora. Si el valor de origen no tiene el formato esperado, devuelven un valor nulo en vez de fallar.
TXT2String(x, formato) / Excel2String(x, formato): como las 6 anteriores pero con el formato de SALIDA libre, para cuando necesitas un texto legible (no una columna date/timestamp de Supabase). TXT2String parte de una fecha en texto ("31/12/2026" o "31/12/2026 23:59:59", igual que las de arriba); Excel2String parte de un número de serie de Excel. El "formato" es una plantilla con estos tokens: YYYY (año), YY (año 2 dígitos), MM (mes 01-12, o minutos si va pegado a HH o a SS), DD (día), HH (hora 00-23), SS (segundos), MonthName (nombre del mes en castellano), DayName (nombre del día de la semana en castellano: Lunes, Martes...) y Quarter (trimestre: "1T".."4T"). El resto del texto de la plantilla se deja tal cual.
TXT2String({fecha}, 'DD/MM/YYYY') · Excel2String({fecha_hora}, 'DayName DD/MM/YYYY HH:MM')
TXT2String({fecha}, 'DD de MonthName de YYYY') · Excel2String({fecha}, 'YYYY-Quarter')
También está disponible cualquier función nativa de PHP (strtoupper, trim, number_format, substr, etc.), y las expresiones se prueban siempre contra la fila de ejemplo (real, autocargada y editable desde el botón { }) antes de guardarlas.
Índice: la casilla junto a "Tipo dato" no forma parte de la expresión -- marca si esta columna debe llevar un índice en Supabase para acelerar las consultas que filtren o agrupen por ella (por ejemplo, una fecha o un código que se busca a menudo). No marques todos los campos por sistema: cada índice de más ralentiza ligeramente cada inserción.
Partición: marca, como mucho en un campo de tipo "date" o "timestamp" por tabla, cuál es la fecha de negocio (por ejemplo, la fecha del asiento) que decide cómo se agrupan las filas para sincronizar con Supabase de forma eficiente (por año en ejercicios cerrados, por mes en el año en curso). Si ninguna columna de una tabla se marca como partición -- lo habitual en tablas de referencia o dimensiones sin fecha -- esa tabla se sincroniza troceada por bloques fijos de 200 filas en el orden de subida.