Dates
Date Relating To Now
‣
‣
- Date: date
formatDate(prop("Date"), "L") == formatDate(now(), "L")
‣
‣
- Date: date
formatDate(dateAdd(now(), 1, "days"), "L") == formatDate(prop("Date"), "L")
‣
‣
- Date: date
now() > prop("Date")
‣
‣
- Date: date
now() > prop("Date") and formatDate(prop("Date"), "L") != formatDate(now(), "L")
‣
‣
- Date: date
now() < prop("Date")
‣
‣
- Date: date
formatDate(now(), "L") == formatDate(prop("Date"), "L") or now() < prop("Date")
‣
‣
- Date: date
formatDate(prop("Date"), "M") == formatDate(now(), "M")
‣
‣
- Date: date
formatDate(prop("Date"), "Q") == formatDate(now(), "Q")
‣
‣
- Date: date
formatDate(prop("Date"), "W") == formatDate(now(), "W")
‣
‣
- Date: date
formatDate(prop("Date"), "w") == formatDate(now(), "w")
‣
‣
- Date: date
now() > start(prop("Date-Range")) and now() < end(prop("Date-Range")) or or(formatDate(now(), "L") == formatDate(start(prop("Date-Range")), "L"), formatDate(now(), "L") == formatDate(end(prop("Date-Range")), "L"))
Date Calculations
*Replace prop("Date") w/ now() to return formulas relating to today
‣
‣
- Date: date
dateSubtract(prop("Date"), date(prop("Date")) - 1, "days")
‣
‣
- Date: date
dateSubtract(dateAdd(dateSubtract(prop("Date"), date(prop("Date")) - 1, "days"), 1, "months"), 1, "days")
‣
‣
- Date: date
ceil((date(prop("Date")) + day(dateSubtract(prop("Date"), date(prop("Date")) - 1, "days")) - 1) / 7)
‣
‣
- Date: date
ceil((date(prop("Date")) + day(dateSubtract(prop("Date"), date(prop("Date")) - 1, "days"))) / 7)
‣
‣
- DOB: date
if(not empty(prop("DOB")), format(dateBetween(now(), prop("DOB"), "years")) + " Years Old", "")
‣
‣
- Date: date
date(dateSubtract(dateAdd(dateSubtract(prop("Date"), date(prop("Date")) - 1, "days"), 1, "months"), 1, "days"))
‣
‣
- Date-Range: date
format(dateBetween(end(prop("Date-Range")), start(prop("Date-Range")), "hours")) + " hr " + format(dateBetween(end(prop("Date-Range")), start(prop("Date-Range")), "minutes") % 60) + " min"
‣
‣
- Start Date: date
- End Date: date
format(dateBetween(prop("End Date"), prop("Start Date"), "hours")) + " hr " + format(dateBetween(prop("End Date"), prop("Start Date"), "minutes") % 60) + " min"
Format Dates
‣
‣
- Date: date
formatDate(prop("Date"), "dddd")
‣
‣
- Date: date
formatDate(prop("Date"), "MMMM")
‣
‣
- Date: date
formatDate(prop("Date"), "Q")
‣
‣
- Date: date
formatDate(prop("Date"), "A")
‣
‣
- Date: date
if(hour(prop("Date")) == 0, "", if(hour(prop("Date")) < 12, "Morning", if(hour(prop("Date")) < 17, "Afternoon", if(hour(prop("Date")) < 25, "Evening", ""))))
‣
‣
- Date: date
formatDate(prop("Date"), "l")
‣
‣
- Date: date
formatDate(prop("Date"), "lll")
‣
‣
- Date: date
formatDate(prop("Date"), "LT")
‣
‣
- Date: date
formatDate(prop("Date"), "z")
‣
‣
- Date: date
formatDate(prop("Date"), "DDD")
Date Use-Cases
‣
‣
- Deadline: date
- Done: checkbox
if(prop("Done"), "\t★", if(formatDate(prop("Deadline"), "MDYYYY") == formatDate(now(), "MDYYYY"), "\t☆", if(now() < prop("Deadline"), "\t→", if(prop("Deadline") < now(), "\t⚠︎", ""))))
‣
‣
- Date: date
if(toNumber(formatDate(prop("Date"), "DDD")) < 80, "🧤 Winter", if(toNumber(formatDate(prop("Date"), "DDD")) < 172, "🌷 Spring", if(toNumber(formatDate(prop("Date"), "DDD")) < 264, "🌞 Summer", if(toNumber(formatDate(prop("Date"), "DDD")) > 354 and toNumber(formatDate(prop("Date"), "DDD")) < 367, "🧤 Winter", "🍁 Fall"))))
‣
‣
- Date: date
if(toNumber(formatDate(prop("Date"), "DDD")) < 80, "🌞 Summer", if(toNumber(formatDate(prop("Date"), "DDD")) < 172, "🍁 Fall", if(toNumber(formatDate(prop("Date"), "DDD")) < 264, "🧤 Winter", if(toNumber(formatDate(prop("Date"), "DDD")) > 354 and toNumber(formatDate(prop("Date"), "DDD")) < 367, "🌞 Summer", "🌷 Spring"))))
Text
Format Text
‣
‣
- Name: Text
replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(prop("Name"), "a", "A"), "b", "B"), "c", "C"), "d", "D"), "e", "E"), "f", "F"), "g", "G"), "h", "H"), "i", "I"), "j", "J"), "k", "K"), "l", "L"), "m", "M"), "n", "N"), "o", "O"), "p", "P"), "q", "Q"), "r", "R"), "s", "S"), "t", "T"), "u", "U"), "v", "V"), "w", "W"), "x", "X"), "y", "Y"), "z", "Z")
‣
‣
- Name: Text
replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(replaceAll(prop("Name"), "A", "a"), "B", "b"), "C", "c"), "D", "d"), "E", "e"), "F", "f"), "G", "g"), "H", "h"), "I", "i"), "J", "j"), "K", "k"), "L", "l"), "M", "m"), "N", "n"), "O", "o"), "P", "p"), "Q", "q"), "R", "r"), "S", "s"), "T", "t"), "U", "u"), "V", "v"), "W", "w"), "X", "x"), "Y", "y"), "Z", "z")
Extract Text
‣
‣
- Name: Text
replace(prop("Name"), "[ ].*", "")
‣
‣
- Name: Text
replace(prop("Name"), ".*[ ]", "")
‣
‣
- Name: Text
replaceAll(prop("Name"), "[^0-9]", "")
Alternative
toNumber(prop("Name"))
‣
‣
- Name: Text
replaceAll(prop("Name"), "[^A-z]", "")
‣
‣
- Name: Text
replaceAll(prop("Name"), ".*[:] ", "")
‣
‣
- Name: Text
replaceAll(prop("Name"), "[:].+", "")
‣
‣
- Name: Text
replaceAll(prop("Name"), "[!@#$%^&*]", " ")
‣
‣
- Name: Text
replaceAll(replace(prop("Name"), "[^(]*[(]", ""), "[)][^)]*$", "")
‣
‣
- Tags: Multi-Select or Relation
if(not empty(prop("Tags")), length(replaceAll(prop("Tags"), "[^,]", "")) + 1, 0)
Extract From URL
‣
‣
- URL: URL
replaceAll(replaceAll(prop("Url"), ".*?www.", ""), "[.].*", "")
‣
‣
- URL: URL
replace(replace(prop("URL"), "/status/.*", ""), ".*.com/", "")
Numbers
Round Numbers
‣
‣
- Number: Number
round(100 * prop("Number")) / 100
‣
‣
- Number: Number
round(10 *prop("Number")) / 10
‣
‣
- Number: Number
round(prop("Number") / .5) * .5
‣
‣
- Number: Number
round(prop("Number"))
‣
‣
- Number: Number
round(prop("Number") / 5) * 5
‣
‣
- Number: Number
round(prop("Number") / 10) * 10
‣
‣
- Number: Number
round(prop("Number") / 25) * 25
Convert To Number
‣
‣
- Habit: Checkbox
unaryPlus(prop("Habit"))
‣
‣
- Name: Text
toNumber(prop("Name"))
Progress Bars
Progress Bar Designs
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("◆◆◆◆◆◆◆◆◆◆", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "" + slice("◇◇◇◇◇◇◇◇◇◇", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("■■■■■■■■■■", 0, floor(10 * prop("Read") / prop("Total Pages"))) + slice("⃞⃞⃞⃞⃞⃞⃞⃞⃞⃞", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("▌▌▌▌▌▌▌▌▌▌", 0, floor(10 * prop("Read") / prop("Total Pages"))) + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("||||||||||||||||||||", 0, floor(20 * prop("Read") / prop("Total Pages"))) + "🁢 " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("▮▮▮▮▮▮▮▮▮▮", 0, floor(10 * prop("Read") / prop("Total Pages"))) + slice("▯▯▯▯▯▯▯▯▯▯", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("⭘⭘⭘⭘⭘⭘⭘⭘⭘⭘", 0, floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("፨፨፨፨፨፨፨፨፨፨", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "჻ " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("⬤⬤⬤⬤⬤⬤⬤⬤⬤⬤", 0, floor(10 * prop("Read") / prop("Total Pages"))) + slice("◯◯◯◯◯◯◯◯◯◯", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("⠤⠴⠾⠿⠿⠿⠿⠿⠿⠿", 0, floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
Slider Designs
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("❒❒❒❒❒❒❒❒❒❒", 0, floor(10 * prop("Read") / prop("Total Pages"))) + " ■ " + slice("❒❒❒❒❒❒❒❒❒❒", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("——————————", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "●" + slice("——————————", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("▒▒▒▒▒▒▒▒▒▒", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "|" + slice("░░░░░░░░░░", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("||||||||||||||||||||", 0, floor(20 * prop("Read") / prop("Total Pages"))) + "🁢" + slice("||||||||||||||||||||", 0, 20 - floor(20 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("❍❍❍❍❍❍❍❍❍❍", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "●" + slice("❍❍❍❍❍❍❍❍❍❍", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("▁▁▁▁▁▁▁▁▁▁", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "▅" + slice("▁▁▁▁▁▁▁▁▁▁", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("▄▄▄▄▄▄▄▄▄▄", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "▀" + slice("▄▄▄▄▄▄▄▄▄▄", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
‣
‣
- Read: Number
- Total Pages: Number
if(not empty(prop("Read")) and not empty(prop("Total Pages")), slice("__________", 0, floor(10 * prop("Read") / prop("Total Pages"))) + "▃" + slice("__________", 0, 10 - floor(10 * prop("Read") / prop("Total Pages"))) + " " + format(floor(100 * prop("Read") / prop("Total Pages"))) + "%", "")
Unique Progress Bars
‣
‣
- Date: Date
slice("◻️◻️◻️◻️◻️◻️◻️", 0, day(prop("Date")) * 2) + "🔲" + slice("◼️◼️◼️◼️◼️◼️◼️", 1, 14 - day(prop("Date")) * 2)
‣
‣
- Date: Date
if(day(prop("Date")) != 0, slice("◻️◻️◻️◻️◻️◻️◻️", 0, (day(prop("Date")) - 1) * 2) + "🔲" + slice("◼️◼️◼️◼️◼️◼️◼️", 1, 14 - (day(prop("Date")) - 1) * 2), "◻️◻️◻️◻️◻️◻️🔲")
‣
‣
- Date Range: Date
- Pages: Number
- Page On: Number
if(not empty(prop("Pages")) and not empty(prop("Date Range")), "Progress: " + format(slice("‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒", 0, floor(20 * prop("Page On") / prop("Pages"))) + "📗" + slice("‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒", 0, 20 - floor(20 * prop("Page On") / prop("Pages"))) + " " + format(floor(100 * prop("Page On") / prop("Pages"))) + "%") + "\nDeadline: " + format(if(dateBetween(start(prop("Date Range")), now(), "days") > 0, "⭕‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒ 0%", if(dateBetween(end(prop("Date Range")), now(), "days") > -1, slice("‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒", 0, floor(20 * dateBetween(now(), start(prop("Date Range")), "days") / dateBetween(end(prop("Date Range")), start(prop("Date Range")), "days"))) + "⭕" + slice("‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒", 0, 20 - floor(20 * dateBetween(now(), start(prop("Date Range")), "days") / dateBetween(end(prop("Date Range")), start(prop("Date Range")), "days"))) + " " + format(floor(100 * dateBetween(now(), start(prop("Date Range")), "days") / dateBetween(end(prop("Date Range")), start(prop("Date Range")), "days"))) + "%", "‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒⭕ 100%"))), "")
‣
‣
- None!
if(10 * toNumber(formatDate(now(), "DDD")) / 365 < 1, "▒░░░░░░░░░ " + format(floor(100 * toNumber(formatDate(now(), "DDD")) / 365)) + "%", if(year(now()) % 4 == 0, slice("▒▒▒▒▒▒▒▒▒▒", 0, 10 * toNumber(formatDate(now(), "DDD")) / 366) + slice("░░░░░░░░░░", 10 * toNumber(formatDate(now(), "DDD")) / 366) + " " + format(floor(100 * toNumber(formatDate(now(), "DDD")) / 366)) + "%", slice("▒▒▒▒▒▒▒▒▒▒", 0, 10 * toNumber(formatDate(now(), "DDD")) / 365) + slice("░░░░░░░░░░", 10 * toNumber(formatDate(now(), "DDD")) / 365) + " " + format(floor(100 * toNumber(formatDate(now(), "DDD")) / 365)) + "%"))
‣
‣
- None!
if(day(now()) == 0, "▒▒▒▒▒▒▒▒▒▒ 100% ", slice("▒▒▒▒▒▒▒▒▒▒", 0, 10 * day(now()) / 7) + slice("░░░░░░░░░░", 10 * day(now()) / 7) + " " + format(floor(100 * day(now()) / 7)) + "%")
‣
‣
- None!
if(10 * hour(now()) / 24 < 1, "▒░░░░░░░░░ " + format(floor(100 * hour(now()) / 24)) + "%", slice("▒▒▒▒▒▒▒▒▒▒", 0, 10 * hour(now()) / 24) + slice("░░░░░░░░░░", 10 * hour(now()) / 24) + " " + format(floor(100 * hour(now()) / 24)) + "%")
Other
Files & Media
‣
‣
- File: Files & Media
replaceAll(prop("File"), ".*[?!^.]", "")
Empty Cell
‣
‣
- Name: Text
if(empty(prop("Name")), "This cell is empty", "")
‣
‣
- Name: Text
if(not empty(prop("Name")), "This cell is not empty", "")