Functions
Last updated
Last updated
Saves time and improves engagement through greater personalisation
Functions allow you to create more dynamic content by manipulating text and numbers.
CONCAT()
Adds together strings to create a new string. |CONCAT("Rob","Bert")| returns RobBert Can be any number of strings |CONCAT("rob","ert"," is ", " ","working"," ","today")| returns "robert is working today" Use with other nested string functions too |CONCAT("Rob",RIGHT("Bert",3))| returns Robert
LEFT()
Returns a new string for the length of characters starting from the left LEFT(string,length) |LEFT("Robert",3)| returns "Rob"
LEN()
Returns the length of a string Example LEN("Robert") returns 6
LOWERCASE()
Forces strings to lowercase. |LOWERCASE("HElen")| = "helen"
MID()
Returns part of a string MID(string, start, length) Example MID("Robert",3,4) returns "bert" All string functions cane be nested. |UPPERCASE(MID("Robert",3,4))| returns "BERT"
REPLACE()
Replaces occurrences of a string within a string with another string :) Format is REPLACE(string,what,by) |REPLACE("i like to eat apples","a","@")| returns "i like to e@t @pples"
RIGHT
Returns a string of length characters starting from the right Format is RIGHT(string, length) |RIGHT("Mary had a little lamb",4)| returns "lamb"
STRCOUNT()
Returns the number of times a substring is found within a string. |STRCOUNT("bird","a little bird sat on my window")| = 1 |STRCOUNT("a","it was a cold night and a bird pecked at an apple")| = 2
UPPERCASE()
Forces string to all uppercase. |UPPERCASE("hello")| = "HELLO"
ABS()
ABS returns the absolute value (ie. removes the negative sign!) ABS(-1) = ABS(1)
AVG()
Returns the average in a list of numbers. e.g AVG(56,27, audience.sender.my_score) |AVG(partition.custom_data["a"], partition.variables[CONCAT("a.",audience.sender.hash,".my_score")])| To find an average of an array: AVG(partition.scores)
FORMAT()
Used to make numbers look attractive - usually to reduce the number of digits after the decimal point. Example |FORMAT(3.1276565,"###.##")| gives 3.13
INT()
Forces value to an integer. for example INT(12.45) = 12 Useful for converting a boolean to a value such as INT(5>2) = 1
MAX()
MAX() returns largest number. MAX(5, 4, 1, 12, 56,72) returns 72
MIN()
MIN() returns the smallest number. MIN(5, 4, 1, 12, 56,72) returns 1
MOD()
MOD stands for modulo. The function returns the remained after a division. The format is MOD(number to be divided, the dividing number). This is most easily shown with an example such as breaking out hours, mins and secs from a duration: Hours = |audience.sender.duration|/3600 Minutes = MOD(|audience.sender.duration|/60,60) Seconds = MOD(|audience.sender.duration|,60)
SUM()
Returns the sum of all values e.g SUM(56,27, audience.sender.my_score) |SUM(partition.custom_data["a"], partition.variables[CONCAT("a.",audience.sender.hash,".my_score")])| To find the sum of an array: SUM(partition.scores)
DATETIME()
Formats dates and times. Please see the DATETIME() article for the full specification Example |DATETIME(NOW(),'MMMM d')| returns the current date in the format April 20 Recipe You can add and subtract time from NOW() to calculate dates in the past on in the future. For example |DATETIME(NOW()-'02:00:00:00','dddd')| will subtract two days from today's date and print the day of the week. For example "Hey, I know it was 2 days ago you looked into that issue because it was a |DATETIME(NOW()-'02:00:00:00','dddd')| "
NOW()
Returns current date and time
NEXTWEEKDAY()
Creates a future date based on which day of the week and how many weeks from now. Use with DATETIME formatting for most practical result. NEXTWEEKDAY(date, day of week number, number of weeks from date) Example |DATETIME(NEXTWEEKDAY(NOW(), 6, 1),'dddd D MMM')| returns the date of Saturday one week from the scenario run date (i.e. from NOW()) e.g. from function given here Saturday 13 May Day of Week number Sunday 0 Monday 1 Tuesday 2 Wednesday 3 Thursday 4 Friday 5 Saturday 6 Recipe Imagine you need a persona to send an email warning about a protest on a Wednesday four weeks from the time of the exercise. The content might look like this: "Hi, I'm writing to warn you of a march affecting access to your offices on |DATETIME(NEXTWEEKDAY(NOW(),3,4), 'ddd D MMM')|. I hope 4 week's notice is enough for you to organise remote working"