ไวยากรณ์สูตรและฟังก์ชัน

ในเอกสารช่วยเหลือนี้

สูตรของ Notion สามารถทำงานกับพร็อพเพอร์ตี้และฟังก์ชันต่างๆ ได้ คุณจะพบรายการของสิ่งเหล่านี้ได้ที่นี่ ➗


  • Looking for Notion formula basics? Check out this article →

  • If you have a formula that doesn't seem to work, learn about common formula errors and how to troubleshoot them in this article →

Know what you want your formula to do, but not sure how to build it? You can use Notion AI to create and edit formulas. Learn more here →

สูตรของ 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\"))

ข้อความ

รหัสเฉพาะ

prop(\"Task ID\").split(\"-\").first() ← คำนำหน้า
prop(\"Task ID\").split(\"-\").last() ← รหัส

ข้อความ

สร้างโดย,
แก้ไขโดย

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

ตัวเลข, วันที่ หรือ ลิสต์ประเภทใดก็ได้ ขึ้นอยู่กับการกำหนดค่า rollup.

Built-ins คือสัญลักษณ์และค่าเฉพาะที่ถูกสร้างไว้ในภาษาเพื่อช่วยกำหนดการคำนวณ

Built-in

ตัวอย่าง

โอเปอเรเตอร์ทางคณิตศาสตร์:+, -, *, %

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

if() คืนค่าตัวแรกถ้าเงื่อนไขเป็นจริง มิฉะนั้นคืนค่าตัวที่สอง

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

ifs

คืนค่าที่ตรงกับเงื่อนไขแรกที่เป็นจริง สามารถใช้แทน if() ซ้อนกันหลายชั้นได้

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

ว่างเปล่า

คืนค่า true ถ้าค่าว่างเปล่า โดยที่ 0, "", และ [] ถือเป็นค่าว่างเปล่า

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

length

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("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()) = \"30 สิงหาคม 2023 17:55\"

เพิ่ม

ส่งคืนผลรวมของตัวเลขสองจำนวน

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

ส่งคืนค่ามัธยฐานของอาร์กิวเมนต์

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

mean

ส่งคืนค่าเฉลี่ยเลขคณิตของอาร์กิวเมนต์

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

sign

ส่งคืน 1 หากตัวเลขเป็นบวก, -1 หากเป็นลบ และ 0 หากเป็นศูนย์.

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

pi

ส่งคืนอัตราส่วนของเส้นรอบวงของวงกลมต่อเส้นผ่านศูนย์กลาง.

pi() = 3.141592653589793

e

ส่งคืนฐานของลอการิทึมธรรมชาติ.

e() = 2.718281828459045

toNumber

แปลงข้อความเป็นตัวเลข.

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

ตอนนี้

ส่งคืนวันที่และเวลาปัจจุบัน.

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

วันนี้

ส่งคืนวันที่ปัจจุบันโดยไม่มีเวลา.

today() = @April 19, 2024

minute

ส่งคืนนาทีของวันที่ (0-59).

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

ชั่วโมง

ส่งคืนชั่วโมงของวันที่ (0-23).

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

วัน

ส่งคืนวันในสัปดาห์ของวันที่ ระหว่าง 1 (วันจันทร์) ถึง 7 (วันอาทิตย์).

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

วันที่

ส่งคืนวันที่ของเดือนจากวันที่ (1-31).

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

สัปดาห์

ส่งคืนสัปดาห์ ISO ของปีจากวันที่ (1-53).

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

เดือน

ส่งคืนเดือนจากวันที่ (1-12).

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

ปี

ส่งคืนปีจากวันที่.

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

ส่งกลับผลต่างระหว่าง 2 วันที่ โดยอาร์กิวเมนต์ของหน่วยอาจเป็นค่าใดค่าหนึ่งต่อไปนี้: \"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

ส่งกลับ Unix timestamp ปัจจุบัน ซึ่งแสดงจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่วันที่ 1 มกราคม 1970

timestamp(now()) = 1693443300000

fromTimestamp

ส่งกลับวันที่จาก Unix timestamp ที่กำหนด โดย timestamp จะแสดงจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่วันที่ 1 มกราคม 1970 หมายเหตุ: วันที่ที่ส่งกลับจะไม่รวมวินาทีและมิลลิวินาที

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([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([3, 1, 2]) = [1, 2, 3]

reverse

ส่งกลับลิสต์ที่ย้อนกลับแล้ว

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

join

ส่งกลับค่าของลิสต์โดยมีตัวเชื่อมวางระหว่างแต่ละค่า

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

ส่งกลับค่าจริงหากลิสต์มีค่าที่ระบุ และส่งกลับค่าเท็จในกรณีอื่น

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

ค้นหา

ส่งกลับรายการแรกในลิสต์ที่เงื่อนไขประเมินเป็นจริง

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

findIndex

ส่งกลับดัชนีของไอเท็มแรกในลิสต์ที่เงื่อนไขเป็นจริง

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

ตัวกรอง

ส่งกลับค่าในลิสต์ที่เงื่อนไขเป็นจริง

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

some

ส่งกลับค่าจริงหากมีไอเท็มใดในลิสต์เป็นไปตามเงื่อนไขที่กำหนด และส่งกลับค่าเท็จในกรณีอื่น

some([1, 2, 3], current == 2) = truesome([\"a\", \"b\", \"c\"], current.length > 2) = 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(prop(\"Relation\").first())

equal

ส่งกลับค่าจริงหากค่าทั้งสองเท่ากัน และส่งกลับค่าเท็จในกรณีอื่น

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

unequal

ส่งกลับค่าเท็จหากค่าทั้งสองเท่ากัน และส่งกลับค่าจริงในกรณีอื่น

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