์ˆ˜์‹ ๊ตฌ๋ฌธ๊ณผ ํ•จ์ˆ˜

์ด ์ฐธ์กฐ ๋ฌธ์„œ์— ์žˆ๋Š” ๋‚ด์šฉ

Notion ์ˆ˜์‹์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์†์„ฑ๊ณผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š” โž—


์ˆ˜์‹์œผ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ  ์‹ถ์€์ง€๋Š” ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ์ง€ ์ž˜ ๋ชจ๋ฅด์‹œ๊ฒ ๋‚˜์š”? Notion AI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์‹์„ ๋งŒ๋“ค๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ โ†’

Notion ์ˆ˜์‹์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์†์„ฑ๊ณผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”.

์ˆ˜์‹์€ ๊ฑฐ์˜ ๋ชจ๋“  ์†์„ฑ ์œ ํ˜•์„ ์ง€์›ํ•ด์š”. ์ˆ˜์‹ ์œ ํ˜•์€ ์†์„ฑ ์œ ํ˜•๊ณผ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์œ ์˜ํ•˜์„ธ์š”.

์†์„ฑ ์œ ํ˜•

์˜ˆ์‹œ

์ˆ˜์‹ ์œ ํ˜•

์ œ๋ชฉ

prop("Title")prop("Title").length()

ํ…์ŠคํŠธ

ํ…์ŠคํŠธ

prop("Text")prop("Text").length()

ํ…์ŠคํŠธ

์„ ํƒ

prop("Priority") == "High"

ํ…์ŠคํŠธ

๋‹ค์ค‘ ์„ ํƒ

prop("Tags").length()prop("Tags").includes("Finance")

ํ…์ŠคํŠธ(๋ฆฌ์ŠคํŠธ)

์ฒดํฌ๋ฐ•์Šค

prop("Checkbox")
not prop("Checkbox")

๋ถ€์šธ

์ด๋ฉ”์ผ, URL, ์ „ํ™”๋ฒˆํ˜ธ

!empty(prop("Phone"))
!empty(prop("Email"))
link("Call", "tel:" + prop("Phone"))

ํ…์ŠคํŠธ

๊ณ ์œ  ID

prop("Task ID").split("-").first() โ† Prefix
prop("Task ID").split("-").last() โ† ID

ํ…์ŠคํŠธ

์ƒ์„ฑ์ž,
ํŽธ์ง‘์ž

prop("Created By").name()
prop("Created By").email()

์‚ฌ๋žŒ

์‚ฌ๋žŒ

prop("Person")
prop("Person").at(0).name()
prop("Person").map(current.email())

์‚ฌ์šฉ์ž(๋ฆฌ์ŠคํŠธ)

๋‚ ์งœ,
์ƒ์„ฑ ์ผ์‹œ,
์ตœ์ข… ํŽธ์ง‘ ์ผ์‹œ

prop("Due Date") > now()
dateBetween(prop("Birthday"), now(), "days")

๋‚ ์งœ

์ˆซ์ž

prop("Number") / 2
pi() * prop("Radius") ^ 2

์ˆซ์ž

๊ด€๊ณ„ํ˜•

prop("Tasks").length()
prop("Tasks").filter(current.prop("Status") !== "Done")

ํŽ˜์ด์ง€(๋ฆฌ์ŠคํŠธ)

๋กค์—…

prop("Purchases").length()
prop("Average cost") * 12

์ˆซ์ž, ๋‚ ์งœ ๋˜๋Š” ๋ฆฌ์ŠคํŠธ(์œ ํ˜• ๋ฌด๊ด€). ๋กค์—…์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง.

๋นŒํŠธ์ธ์€ ๊ณ„์‚ฐ์„ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์–ธ์–ด์— ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ํŠน์ • ๊ธฐํ˜ธ์™€ ๊ฐ’์ž…๋‹ˆ๋‹ค.

๋นŒํŠธ์ธ

์˜ˆ์‹œ

์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž:+, -, *, %

2 * pi()"hello" + "world"

๋ถ€์šธ ๊ฐ’:
true, false

truefalse

๋น„๊ต ์—ฐ์‚ฐ์ž:
==, >, >=, <, <=

123 == 123 = true"Notion" == "Motion" = false

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž:
and, or, not

and:true and false
true && false
and(true, false)
or:true or false
true || false
or(true, false)
not:not true
!true

์‚ผํ•ญ ์—ฐ์‚ฐ์ž:
? :

X ? Y : Z๋Š” if(X, Y, Z)์™€ ๊ฐ™์Œ

Notion ์ˆ˜์‹์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„

์„ค๋ช…

์˜ˆ์‹œ

if

์กฐ๊ฑด์ด TRUE์ด๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  FALSE์ด๋ฉด ๋‘ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

if(true, 1, 2) = 1if(false, 1, 2) = 2prop("Checked") == true ? "Complete" : "Incomplete"

ifs

์ฒซ ๋ฒˆ์งธ TRUE ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ค‘์ฒฉ๋œ if() ๋ฌธ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ifs(true, 1, true, 2, 3) = 1ifs(false, 1, false, 2, 3) = 3

empty

๊ฐ’์ด ๋น„์–ด ์žˆ์œผ๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 0, โ€œโ€, [] ๊ธฐํ˜ธ๋Š” ๋น„์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

empty(0) = trueempty([]) = true

length

ํ…์ŠคํŠธ ๋˜๋Š” ๋ฆฌ์ŠคํŠธ ๊ฐ’์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

length("hello") = 5length([1, 2, 3]) = 3

substring

์‹œ์ž‘ ์ƒ‰์ธ(ํฌํ•จ)๋ถ€ํ„ฐ ๋ ์ƒ‰์ธ(์„ ํƒ์ , ์ œ์™ธ)๊นŒ์ง€ ํ…์ŠคํŠธ์—์„œ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

substring("Notion", 0, 3) = "Not"substring("Notion", 3) = "ion"

๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ

๊ฐ’์— ๊ฒ€์ƒ‰ ๋ฌธ์ž์—ด์ด ์žˆ์œผ๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

contains("Notion", "ot") = true

test

๊ฐ’์ด ์ •๊ทœ์‹๊ณผ ์ผ์น˜ํ•˜๋ฉด TRUE๋ฅผ, ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

test("Notion", "Not") = truetest("Notion", "\\d") = false

match

์ •๊ทœ์‹์˜ ๋ชจ๋“  ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

match("Notion Notion", "Not") = ["Not", "Not"]match("Notion 123 Notion 456", "\\d+") = ["123", "456"]

replace

์ •๊ทœ์‹์˜ ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋Œ€์ฒดํ•  ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

replace("Notion Notion", "N", "M") = "Motion Notion"

replaceAll

์ •๊ทœ์‹์˜ ๋ชจ๋“  ์ผ์น˜ ํ•ญ๋ชฉ์„ ๋Œ€์ฒดํ•  ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

replaceAll("Notion Notion", "N", "M") = "Motion Motion"replaceAll("Notion 123", "\\d", "") = "Notion"

lower

ํ…์ŠคํŠธ๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

lower("NOTION") = "notion"

upper

ํ…์ŠคํŠธ๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

upper("notion") = "NOTION"

repeat

์ฃผ์–ด์ง„ ํšŸ์ˆ˜๋งŒํผ ํ…์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

repeat("0", 4) = "0000"repeat("~=", 10) = "~=~=~=~=~=~=~=~=~=~="

link

๋ ˆ์ด๋ธ” ํ…์ŠคํŠธ์™€ URL์—์„œ ํ•˜์ดํผ๋งํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

link("Notion", "https://notion.so") = "Notion"

style

ํ…์ŠคํŠธ์— ์Šคํƒ€์ผ๊ณผ ์ƒ‰์ƒ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์„œ์‹ ์Šคํƒ€์ผ: "b"(๊ตต๊ฒŒ), "u"(๋ฐ‘์ค„), "i"(๊ธฐ์šธ์ž„๊ผด), "c"(์ฝ”๋“œ), "s"(์ทจ์†Œ์„ ). ์œ ํšจํ•œ ์ƒ‰์ƒ: "gray", "brown", "orange", "yellow", "green", "blue", "purple", "pink", "red". ๋ฐฐ๊ฒฝ์ƒ‰์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์ƒ‰์ƒ์— "_background"๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

style("Notion", "b", "u") = "Notion" style("Notion", "blue", "gray_background")

unstyle

ํ…์ŠคํŠธ์—์„œ ์„œ์‹ ์Šคํƒ€์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์Šคํƒ€์ผ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

unstyle("Text")unstyle("Text", "b")

format

ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

format(1234) = "1234"format(now()) = "August 30, 2023 17:55"

add

๋‘ ์ˆซ์ž์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

add(5, 10) = 155 + 10 = 15

subtract

๋‘ ์ˆซ์ž์˜ ์ฐจ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

subtract(5, 10) = -55 - 10 = -5

multiply

๋‘ ์ˆซ์ž์˜ ๊ณฑ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

multiply(5, 10) = 505 * 10 = 50

mod

์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋‘ ๋ฒˆ์งธ ์ˆ˜๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

mod(5, 10) = 55 % 10 = 5

pow

๋ฐ‘์ˆ˜๋ฅผ ์ง€์ˆ˜๋งŒํผ ๊ฑฐ๋“ญ์ œ๊ณฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

pow(5, 10) = 97656255 ^ 10 = 9765625

divide

๋‘ ์ˆซ์ž๋ฅผ ๋‚˜๋ˆˆ ๋ชซ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

divide(5, 10) = 0.55 / 10 = 0.5

min

์ธ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

min(1, 2, 3) = 1min([1, 2, 3]) = 1

max

์ธ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

max(1, 2, 3) = 3max([1, 2, 3]) = 3

sum

์ธ์ˆ˜์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

sum(1, 2, 3) = 6sum([1, 2, 3], 4, 5) = 15

์ค‘์•™๊ฐ’

์ธ์ˆ˜์˜ ์ค‘๊ฐ„๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

median(1, 2, 4) = 2
median([1, 2, 3], 4) = 2.5

ํ‰๊ท 

์ธ์ˆ˜์˜ ์‚ฐ์ˆ  ํ‰๊ท ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

mean(1, 2, 3) = 2
mean([1, 2, 3], 4, 5) = 3

abs

์ˆ˜์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

abs(10) = 10abs(-10) = 10

round

์ˆซ์ž๋ฅผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ๋Š” ๊ฐ’์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ๋ฐ˜์˜ฌ๋ฆผํ•  ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜์ž…๋‹ˆ๋‹ค.

round(0.4) = 0round(-0.6) = -1
round(1.234, 0)
= 1round(1.234, 2) = 1.23round(1234, -2) = 1200

ceil

์ง€์ •ํ•œ ์ˆ˜๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ceil(0.4) = 1ceil(-0.6) = 0

floor

์ง€์ •ํ•œ ์ˆ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

floor(0.4) = 0floor(-0.6) = -1

sqrt

์ˆ˜์˜ ์–‘์˜ ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

sqrt(4) = 2sqrt(7) = 2.6457513110645907

cbrt

์ˆ˜์˜ ์„ธ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

cbrt(9) = 2.080083823051904cbrt(64) = 4

exp

e^x๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ x๋Š” ์ธ์ˆ˜์ด๊ณ , e๋Š” ์ž์—ฐ๋กœ๊ทธ์˜ ๋ฐ‘์ธ ์˜ค์ผ๋Ÿฌ ์ƒ์ˆ˜(2.718โ€ฆ)์ž…๋‹ˆ๋‹ค.

exp(1) = 2.718281828459045exp(-1) = 0.36787944117144233

ln

์ˆ˜์˜ ์ž์—ฐ๋กœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ln(2.718281828459045) = 1ln(10) = 2.302585092994046

log10

์ˆ˜์˜ ๋ฐ‘์ด 10์ธ ๋กœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

log10(10) = 1log10(100000) = 5

log2

์ˆ˜์˜ ๋ฐ‘์ด 2์ธ ๋กœ๊ทธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

log2(4) = 2log2(1024) = 10

ํ‘œ์ง€ํŒ

์ˆ˜๊ฐ€ ์–‘์ˆ˜์ด๋ฉด 1์„, ์Œ์ˆ˜์ด๋ฉด -1์„, 0์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

sign(-10) = -1sign(10) = 1

pi

์›์ฃผ์œจ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

pi() = 3.141592653589793

e

์ž์—ฐ๋กœ๊ทธ์˜ ๋ฐ‘์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

e() = 2.718281828459045

toNumber

ํ…์ŠคํŠธ์—์„œ ์ˆซ์ž๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

toNumber("2") = 2toNumber(now()) = 1693443300000toNumber(true) = 1

now

ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

now() = @August 30, 2023 5:55 PM

์˜ค๋Š˜

์‹œ๊ฐ„์„ ์ œ์™ธํ•œ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

today() = @2024๋…„ 4์›” 19์ผ

minute

๋‚ ์งœ์˜ ๋ถ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(0~59).

minute(parseDate("2023-07-10T17:35Z")) = 35

hour

๋‚ ์งœ์˜ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(0~23).

hour(parseDate("2023-07-10T17:35Z")) = 17

day

๋‚ ์งœ์˜ ์š”์ผ์„ 1(์›”์š”์ผ)๋ถ€ํ„ฐ 7(์ผ์š”์ผ)๊นŒ์ง€์˜ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

day(parseDate("2023-07-10T17:35Z")) = 1

date

๋‚ ์งœ์˜ ์ผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(1~31).

date(parseDate("2023-07-10T17:35Z")) = 10

week

๋‚ ์งœ๊ฐ€ ํ•œ ํ•ด์˜ ๋ช‡ ๋ฒˆ์งธ ์ฃผ์ธ์ง€ ISO ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(1~53).

week(parseDate("2023-01-02")) = 1

month

๋‚ ์งœ์˜ ์›”์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(1-12).

month(parseDate("2023-07-10T17:35Z")) = 7

year

๋‚ ์งœ์˜ ์—ฐ๋„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

year(now()) = 2023

dateAdd

๋‚ ์งœ์— ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„ ์ธ์ˆ˜: "years", "quarters", "months", "weeks", "days", "hours", "minutes"

dateAdd(now(), 1, "days") = @August 31, 2023 5:55 PMdateAdd(now(), 2, "months") = @October 30, 2023 5:55
PM
dateAdd(now(), 3, "years") = @August 30, 2026 5:55 PM

dateSubtract

๋‚ ์งœ์—์„œ ์‹œ๊ฐ„์„ ๋บ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„ ์ธ์ˆ˜: "years", "quarters", "months", "weeks", "days", "hours", "minutes"

dateSubtract(now(), 1, "days") = @August 29, 2023 5:55 PMdateSubtract(now(), 2, "months") = @June 30, 2023 5:55 PMdateSubtract(now(), 3, "years") = @August 30, 2020 5:55 PM

dateBetween

๋‘ ๋‚ ์งœ์˜ ์ฐจ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„ ์ธ์ˆ˜: "years", "quarters", "months", "weeks", "days", "hours", "minutes"

dateBetween(now(), parseDate("2022-09-07"), "days") = 357dateBetween(parseDate("2030-01-01"), now(), "years") = 6

dateRange

์‹œ์ž‘ ๋‚ ์งœ์™€ ์ข…๋ฃŒ ๋‚ ์งœ๋กœ ๊ตฌ์„ฑ๋œ ๊ธฐ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

dateRange(prop("Start Date"), prop("End Date")) = @September 7, 2022 โ†’ September 7, 2023

dateStart

๊ธฐ๊ฐ„์˜ ์‹œ์ž‘์ผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

dateStart(prop("Date Range")) = @September 7, 2022dateBetween(dateStart(prop("Date Range")), dateEnd(prop("Date Range")), "days") = -365

dateEnd

๊ธฐ๊ฐ„์˜ ์ข…๋ฃŒ์ผ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

dateEnd(prop("Date range")) = @September 7, 2023dateBetween(dateEnd(prop("Date Range")), dateStart(prop("Date Range")), "days") = 365

timestamp

1970๋…„ 1์›” 1์ผ ์ดํ›„๋กœ ๊ฒฝ๊ณผํ•œ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ˜„์žฌ์˜ Unix ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

timestamp(now()) = 1693443300000

fromTimestamp

์ฃผ์–ด์ง„ Unix ํƒ€์ž„์Šคํƒฌํ”„์—์„œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ž„์Šคํƒฌํ”„๋Š” 1970๋…„ 1์›” 1์ผ ์ดํ›„๋กœ ๊ฒฝ๊ณผํ•œ ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฐธ๊ณ : ๋ฐ˜ํ™˜๋˜๋Š” ๋‚ ์งœ์—๋Š” ์ดˆ์™€ ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

fromTimestamp(1689024900000) = @July 10, 2023 2:35 PM

formatDate

์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ํ˜•์‹์˜ ๋ฌธ์ž์—ด๋กœ ๋‚ ์งœ ํ˜•์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ ์งœ์˜ ๊ฐ ๋ถ€๋ถ„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์—ฐ๋„๋Š” "YYYY", ์›”์€ "MM", ์ผ์€ "DD", ์‹œ๊ฐ„์€ "h" , ๋ถ„์€ "mm" ํ…์ŠคํŠธ๋ฅผ ํ˜•์‹ ๋ฌธ์ž์—ด์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

formatDate(now(), "MMMM D, Y") = "August 30, 2023"
formatDate(now(), "MM/DD/YYYY")
= "08/30/2023"
formatDate(now(), "h:mm A")
= "17:55 PM"

formatNumber

"Revenue: " + formatNumber(prop("Number"), "usd", 0).style("green")

parseDate

ISO 8601 ํ‘œ์ค€์— ๋”ฐ๋ผ ๊ตฌ๋ฌธ ๋ถ„์„๋œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

parseDate("2022-01-01") = @January 1, 2022parseDate("2022-01-01T00:00Z") = @December 31, 2021 4:00 PM

name

์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

name(prop("Created By"))prop("Pioneers").map(name(current)).join(", ") = "Grace Hopper, Ada Lovelace"

์ด๋ฉ”์ผ

์‚ฌ๋žŒ์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

email(prop("Created By"))prop("People").map(email(current)).join(", ")

at

๋ฆฌ์ŠคํŠธ์—์„œ ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

at([1, 2, 3], 1) = 2

first

๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

first([1, 2, 3]) = 1

last

๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

last([1, 2, 3]) = 3

slice

์ œ๊ณต๋œ ์‹œ์ž‘ ์ƒ‰์ธ(ํฌํ•จ)๋ถ€ํ„ฐ ๋ ์ƒ‰์ธ(์„ ํƒ์ , ์ œ์™ธ)๊นŒ์ง€ ๋ฆฌ์ŠคํŠธ์˜ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

slice([1, 2, 3], 1, 2) = [2]slice(["a", "b", "c"], 1) = ["b", "c"]

concat

์—ฌ๋Ÿฌ ๋ฆฌ์ŠคํŠธ์˜ ์—ฐ๊ฒฐ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

concat([1, 2], [3, 4]) = [1, 2, 3, 4]concat(["a", "b"], ["c", "d"]) = ["a", "b", "c", "d"]

sort

๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

sort([3, 1, 2]) = [1, 2, 3]

reverse

์—ญ์ˆœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

reverse(["green", "eggs", "ham"]) = ["ham", "eggs", "green"]

join

๊ฐ ๊ฐ’ ์‚ฌ์ด์— ์กฐ์ด๋„ˆ(joiner)๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

join(["a", "b", "c"], ", ") = "a, b, c"join(["dog", "go"], "") = "doggo"

split

ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ฐ’์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

split("apple,pear,orange", ",") = ["apple", "pear", "orange"]

unique

์ž…๋ ฅ ๋ฆฌ์ŠคํŠธ์—์„œ ๊ณ ์œ ๊ฐ’์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

unique([1, 1, 2]) = [1, 2]

includes

๋ฆฌ์ŠคํŠธ์— ์ง€์ •๋œ ๊ฐ’์ด ์žˆ์œผ๋ฉด TRUE๋ฅผ, ์—†์œผ๋ฉด FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

includes(["a", "b", "c"], "b") = trueincludes([1, 2, 3], 4) = false

find

๋ฆฌ์ŠคํŠธ์—์„œ ์กฐ๊ฑด์ด TRUE๋กœ ๊ณ„์‚ฐ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

find(["a", "b", "c"], current == "b") = "b"find([1, 2, 3], current > 100) = Empty

findIndex

๋ฆฌ์ŠคํŠธ์—์„œ ์กฐ๊ฑด์ด TRUE์ธ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

findIndex(["a", "b", "c"], current == "b") = 1findIndex([1, 2, 3], current > 100) = -1

filter

๋ฆฌ์ŠคํŠธ์—์„œ ์กฐ๊ฑด์ด TRUE์ธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

filter([1, 2, 3], current > 1) = [2, 3]filter(["a", "b", "c"], current == "a") = ["a"]

some

๋ฆฌ์ŠคํŠธ์˜ ํ•ญ๋ชฉ ์ค‘ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด TRUE๋ฅผ, ์—†์œผ๋ฉด FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

some([1, 2, 3], current == 2) = truesome(["a", "b", "c"], current.length > 2) = false

every

๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋ฉด TRUE๋ฅผ, ์•„๋‹ˆ๋ฉด FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

every([1, 2, 3], current > 0) = trueevery(["a", "b", "c"], current == "b") = false

map

์ž…๋ ฅ ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ํ‘œํ˜„์‹์„ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ฑ„์›Œ์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

map([1, 2, 3], current + 1) = [2, 3, 4]map([1, 2, 3], current + index) = [1, 3, 5]

flat

๋ฆฌ์ŠคํŠธ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋กœ ํš์ผํ™”ํ•ฉ๋‹ˆ๋‹ค.

flat([1, 2, 3]) = [1, 2, 3]flat([[1, 2], [3, 4]]) = [1, 2, 3, 4]

id

ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ID๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ID๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ์ˆ˜์‹์ด ์žˆ๋Š” ํŽ˜์ด์ง€์˜ ID๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

id()
id(prop("Relation").first())

equal

๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด TRUE๋ฅผ, ๋‹ค๋ฅด๋ฉด FALSE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

equal(1, 1) = true"a" == "b" = false

unequal

๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด FALSE๋ฅผ, ๋‹ค๋ฅด๋ฉด TRUE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

unequal(1, 2) = true"a" != "a" = false

let

๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„์‹์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

let(person, "Alan", "Hello, " + person + "!") = "Hello, Alan!"let(radius, 4, round(pi() * radius ^ 2)) = 50

lets

์—ฌ๋Ÿฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„์‹์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

lets(a, "Hello", b, "world", a + " " + b) = "Hello world"lets(base, 3, height, 8, base * height / 2) = 12

trim

ํ…์ŠคํŠธ์˜ ์‹œ์ž‘๊ณผ ๋์—์„œ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

" notion ".trim() = "notion"


ํ”ผ๋“œ๋ฐฑ ๋ณด๋‚ด๊ธฐ

์ด ๋‚ด์šฉ์ด ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?


๋‹ค์Œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†์„ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†์„ฑ์„ ํ†ตํ•ด ๋งˆ๊ฐ์ผ, ์ž‘์—… ๋‹ด๋‹น์ž, ๊ด€๋ จ URL, ์ตœ์ข… ํŽธ์ง‘ ์ผ์‹œ ํƒ€์ž„์Šคํƒฌํ”„ ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•ญ๋ชฉ์— ๋‹ค์–‘ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ๊ฒ€์ƒ‰ํ•  ์ˆ˜๋„ ์žˆ์–ด์š” ๐Ÿงฉ

Powered by Fruition