Passa al contenuto principale

Placeholder e funzioni

I placeholder ti permettono di inserire il valore di un campo dentro un messaggio e-mail, il valore calcolato di un auto field o un Widget Rich Text.

Ad esempio, ecco come useresti i placeholder per un Task e-mail:

Dear {customer.name} {customer.lastname},
thank you for your order. The total amount is {total} and the order ID is {id}.
Best regards

In questo esempio, i placeholder {total} e {id} verranno sostituiti con i valori presi dal record corrente. I placeholder {customer.name} e {customer.lastname} verranno sostituiti con i valori del record referenziato dal campo customer del record corrente.

Ed ecco come useresti i placeholder per un auto field:

{name} {lastname}

Questo auto field conterrà i valori concatenati dei campi name e lastname del record corrente.

Funzioni​

A volte devi trasformare i valori referenziati. Ad esempio, potresti voler rendere maiuscola una stringa. È facile: basta digitare {UPPER(name)}.

Puoi anche combinare più funzioni, come negli esempi seguenti:

  • {UPPER(TRIM(lastname))} (questa rimuove gli spazi bianchi dal valore prima di convertirlo in maiuscolo)
  • {IF_TEXT(GT(price, 0), 'yes', 'no')} (questa stampa yes se price è maggiore di 0, altrimenti stampa no)

Le funzioni possono anche referenziare più campi. Ad esempio, supponendo di avere due campi data chiamati created e completed, puoi calcolare il numero di giorni tra loro usando {DAYS_TO(created, completed)}

Funzioni da usare sui campi testuali:​

FunzioneRestituisceEsempioDescrizione
LOWER(<text>)TextLOWER(name)Converte una stringa in minuscolo.
UPPER(<text>)TextUPPER(name)Converte una stringa in maiuscolo.
LEFT(<text>, <num>)TextLEFT(name, 3)Restituisce i primi num caratteri a sinistra della stringa.
RIGHT(<text>, <num>)TextRIGHT(name, 3)Restituisce gli ultimi num caratteri a destra della stringa.
SUBSTR(<text>, <from>, <num>)TextSUBSTR(name, 2, 3)Restituisce caratteri dal centro della stringa, a partire dalla posizione from e includendo num caratteri. Il primo carattere è numerato 1.
TRIM(<text> [, <char>])TextTRIM(name)Rimuove gli spazi bianchi all'inizio e alla fine della stringa. Puoi anche passare un secondo argomento per rimuovere un carattere specifico invece degli spazi: TRIM(code, '-').
CONCAT(<text>, <text> [, ...])TextCONCAT(name, ' ', lastname)Unisce due o più valori testuali in un'unica stringa. Puoi passare argomenti aggiuntivi secondo necessità.
IFEMPTY(<text>, <default>)TextIFEMPTY(name, 'n/a')Restituisce la prima stringa se non è vuota, altrimenti la stringa fornita come secondo argomento. Utile quando vuoi definire un valore predefinito.
IF_TEXT(<condition>, <then> [, <else>])TextIF_TEXT(GT(total, 100), 'High', 'Low')Restituisce then quando condition è vera, altrimenti else (o una stringa vuota se else è omesso).
REGEXP_EXTRACT(<text>, <regex>)TextREGEXP_EXTRACT(code, '(..)$')Applica l'espressione regolare fornita al valore di input e restituisce la prima cattura tra parentesi. Il pattern usato nell'esempio restituirà gli ultimi due caratteri.
REGEXP_REPLACE(<text>, <regex>, <replace>)TextREGEXP_REPLACE(code, ' ', '_')Cerca l'espressione regolare fornita e applica la stringa di sostituzione indicata.
LPAD(<text>, <len>, <char>)TextLPAD(code, 10, '0')Riempie a sinistra la stringa fornita per renderla lunga almeno len caratteri, anteponendo il char indicato.
MD5(<text>)TextMD5(code)Calcola l'MD5 della stringa fornita (in rappresentazione esadecimale).
MD5_NUMERIC(<text>)TextMD5_NUMERIC(code)Calcola un hash numerico derivato dall'MD5 della stringa (utile quando ti serve un'impronta stabile simile a un intero invece di testo esadecimale).
TEXT_EQ(<text>, <text>)BooleanTEXT_EQ(status, 'open')Restituisce true quando i due valori di testo sono uguali. Utile dentro IF_TEXT() per confronti tra stringhe.

Funzioni da usare sui campi numerici:​

FunzioneRestituisceEsempioDescrizione
MIN(<num>, <num>)NumberMIN(field1, field2)Restituisce il numero più basso tra i due.
MAX(<num>, <num>)NumberMAX(field1, field2)Restituisce il numero più alto tra i due.
HOURS_TO_HOURMIN(<num>)TextHOURS_TO_HOURMIN(field1)Tratta la variabile di input come un numero di ore e la trasforma in una stringa di durata "HH:MM" (ad esempio, 1.5 verrebbe convertito in 1:30).
MIN_TO_HOURMIN(<num>)TextMIN_TO_HOURMIN(field1)Tratta la variabile di input come un numero di minuti e la trasforma in una stringa di durata "HH:MM" (ad esempio, 90 verrebbe convertito in 1:30).
ROUND(<num>, <decimals>)NumberROUND(price, 2)Restituisce il numero arrotondato al numero di decimali indicato.
FLOOR(<num>)NumberFLOOR(price)Restituisce il numero arrotondato per difetto all'intero più vicino.
CEILING(<num>)NumberCEILING(price)Restituisce il numero arrotondato per eccesso all'intero più vicino.
ADD(<num>, <num>)NumberADD(price, 20)Somma i due argomenti.
SUBTRACT(<num>, <num>)NumberSUBTRACT(price, 20)Sottrae il secondo argomento dal primo.
MULTIPLY(<num>, <num>)NumberMULTIPLY(price, 1.2)Calcola il prodotto dei due argomenti.
DIVIDE(<num>, <num>)NumberDIVIDE(price, 2)Divide il primo argomento per il secondo.
MOD(<num>, <num>)NumberMOD(price, 3)Divide il primo argomento per il secondo e restituisce il resto.
GT(<num>, <num>)BooleanGT(price, 100)Restituisce true se il primo numero è maggiore del secondo.
LT(<num>, <num>)BooleanLT(qty, 1)Restituisce true se il primo numero è minore del secondo.

Funzioni da usare sui campi data/ora:​

FunzioneRestituisceEsempioDescrizione
DATE(<year>, <month>, <day>)DateDATE(2026, 8, 10)Costruisce una data da numeri di anno, mese e giorno (mese e giorno vengono limitati a intervalli validi).
FORMAT(<date>, <format>)TextFORMAT(created, 'd/m/Y')Renderizza la data/ora fornita come stringa usando il formato indicato. I specificatori di formato validi sono Y (anno), m (mese), d (giorno), H (24 ore), h (12 ore), i (minuti), s (secondi), A (AM/PM).
ADD_MINUTES(<date>, <num>)Date/timeADD_MINUTES(created, 30)Aggiunge il numero di minuti indicato alla data di input.
SUB_MINUTES(<date>, <num>)Date/timeSUB_MINUTES(created, 30)Sottrae il numero di minuti indicato dalla data di input.
ADD_HOURS(<date>, <num>)Date/timeADD_HOURS(created, 2)Aggiunge il numero di ore indicato alla data di input.
SUB_HOURS(<date>, <num>)Date/timeSUB_HOURS(created, 2)Sottrae il numero di ore indicato dalla data di input.
ADD_DAYS(<date>, <num>)Date/timeADD_DAYS(created, 5)Aggiunge il numero di giorni indicato alla data di input.
SUB_DAYS(<date>, <num>)Date/timeSUB_DAYS(created, 5)Sottrae il numero di giorni indicato dalla data di input.
ADD_MONTHS(<date>, <num>)Date/timeADD_MONTHS(created, 1)Aggiunge il numero di mesi indicato alla data di input.
SUB_MONTHS(<date>, <num>)Date/timeSUB_MONTHS(created, 1)Sottrae il numero di mesi indicato dalla data di input.
ADD_YEARS(<date>, <num>)Date/timeADD_YEARS(created, 1)Aggiunge il numero di anni indicato alla data di input.
SUB_YEARS(<date>, <num>)Date/timeSUB_YEARS(created, 1)Sottrae il numero di anni indicato dalla data di input.
DAYS_TO(<date>, <date>)NumberDAYS_TO(created, completed)Calcola la differenza in giorni tra le date fornite (seconda meno prima).
TO_SECONDS(<datetime>)NumberTO_SECONDS(created)Converte un valore data/ora o ora in secondi (epoch Unix per un timestamp completo; secondi dalla mezzanotte per un valore solo ora).
TO_MINUTES(<datetime>)NumberTO_MINUTES(created)Come TO_SECONDS, poi diviso per 60 — utile per calcoli di durata in minuti.
ADD_TIME_TO_DATE(<date>, <time>)Date/timeADD_TIME_TO_DATE(day, time)Combina una data e un'ora in un unico valore data/ora.
TIME_DIFF(<datetime>, <datetime>)TimeTIME_DIFF(end, start)Restituisce la differenza tra due valori data/ora (o ora) come intervallo orario.

Funzioni da usare solo nei Task:​

Le funzioni seguenti possono essere usate solo nei Task o nei nomi file e non nei campi con valore automatico, perché generano valori non deterministici:

FunzioneRestituisceEsempioDescrizione
NOW()Date/timeNOW()Restituisce il timestamp corrente nel Timezone dell'app (ora locale wall-clock, non UTC). Puoi formattarlo con la funzione FORMAT().
RANDBETWEEN(<min>, <max>)NumberRANDBETWEEN(111111, 999999)Genera un numero casuale nell'intervallo specificato.

Ti serve una funzione che non è ancora implementata? Scrivici ;-)