公式語法與函數

在此說明文件中

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("核取方塊")
not prop("核取方塊")

布林屬性

電子郵件(地址)、網址、電話號碼

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

文字

唯一識別碼

prop(\"Task ID\").split(\"-\").first() ← 前綴
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("到期日") > now()
dateBetween(prop("生日"), 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

根據另一個值在兩個選項之間切換。

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

空白

測試值是否為空。0、“”和 [] 皆視為空。

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

length

傳回字串的長度。

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

子字串

從起始索引(包含)到結束索引(可選,不包含)的字串中擷取子字串。

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

包含

如果在第一個引數中找到第二個引數,則傳回 True。

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

測試

測試字串是否與正規表達式相符。

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("Notion", "https://notion.so") = "Notion"

樣式

新增文字樣式和顏色。有效樣式格式:\"b\"(粗體)、\"u\" (底線)、\"i\"(斜體)、\"c\"(代碼)或\"s\"(刪除線)。有效顏色:\"gray\"(灰色)、\"brown\"(棕色)、\"orange\"(橘色)、\"yellow\"(黃色)、\"green\"(綠色)、\"blue\"(藍色)、\"purple\"(紫色)、\"pink\"(粉紅色)和\"red\"(紅色)。將\"_background\"新增至顏色即可設定背景顏色。

樣式(\"Notion\", \"b\", \"u\") = \"Notion\" 樣式(\"Notion\", \"blue\", \"gray_background\")

移除樣式

移除指定輸入的格式化樣式。如果未指定任何樣式,則會移除所有樣式。

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

格式

將其引數格式化為字串。

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

加入

將兩個數字相加並傳回其總和,或者將兩個字串連接起來。

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

減去

將兩個數字相減並傳回其差值。

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

乘法

將兩個數字相乘並傳回其乘積。

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

mod

將兩個數字相除並傳回其餘數。

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

pow

傳回底數的指數次方,即 baseexponent。

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

除法

將兩個數字相除並傳回其商數。

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

最小值

傳回零或多個數字的最小值。

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

max

傳回零個或多個數字中的最大值。

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

總和

加總一系列數字。

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

中位數

傳回其引數的中間值。

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

標誌

傳回 x 的符號,指示 x 是正數、負數還是零。

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

傳回日期的分鐘。

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

小時

傳回日期的小時。

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

傳回日期的天。

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

日期

建立包含年、月及日的日期。

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

傳回日期年份的 ISO 週(1 到 53)。

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

傳回日期的月份。

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

傳回兩個日期之間的差值。引數單位可以是下列選項:\"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(\"日期範圍\")) = @September 7, 2022dateBetween(dateStart(prop(\"日期範圍\")), dateEnd(prop(\"日期範圍\")), \"days\") = -365

dateEnd

擷取日期範圍的結束日期。

dateEnd(prop(\"日期範圍\")) = @September 7, 2023dateBetween(dateEnd(prop(\"日期範圍\")), dateStart(prop(\"日期範圍\")), \"days\") = 365

timestamp

傳回 Unix 毫秒時間戳記的整數,對應於自 1970 年 1 月 1 日起的毫秒數。

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(\"建立者\"))prop(\"Pioneers\").map(name(current)).join(\", \") = \"Grace Hopper, Ada Lovelace\"

電子郵件

傳回人員的電子郵件。

email(prop(\"建立者\"))prop(\"People\").map(email(current)).join(\", \")

傳回一系列值中特定索引的值。

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

includes

如果清單包含特定值,則傳回 True,否則傳回 False。

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

尋找

傳回列表中第一個符合條件為 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

篩選條件

傳回第一個引數的值,該引數在第二個引數的表達式上執行時傳回 True。

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

some

如果提供的表達式為清單中任何條目傳回 True,則傳回 True,否則傳回 False。

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

如果表達式為清單中所有條目傳回 True,則傳回 True,否則傳回 False。

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

地圖

傳回將第二個引數套用至第一個引數中每個元素的一系列結果。

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(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"


給予回饋

這項資源有用嗎?


Powered by Fruition