简介
Notion 函数可以通过各种属性和方法来操作。在这里,你将找到它们 ➗
<aside> <img src="/icons/attachment_orange.svg" alt="/icons/attachment_orange.svg" width="40px" /> 想了解 Notion 函数基础知识吗?查看 这篇文章 →
</aside>
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") |
布尔 | |
电子邮件、网址、电话 | !empty(prop("Phone")) |
|
!empty(prop("Email")) |
||
link("Call", "tel:" + prop("Phone")) |
文本 | |
唯一 ID | 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("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 |
true |
false |
|
比较运算符: | |
== 、> 、>= 、< 、<= |
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) = 1 |
if(false, 1, 2) = 2 |
||
prop("Checked") == true ? "Complete" : "Incomplete" |
||
ifs | 返回与第一个为真的条件相对应的值。这可以用作多个嵌套 if() 语句的替代方案。 | ifs(true, 1, true, 2, 3) = 1 |
ifs(false, 1, false, 2, 3) = 3 |
||
empty | 如果值为空,则返回true。0,"",和 [] 被视为为空。 | empty(0) = true |
empty([]) = true |
||
length | 返回文本或列表值的长度。 | length("hello") = 5 |
length([1, 2, 3]) = 3 |
||
substring | 从起始索引(包含)到结束索引(可选,不包含)返回文本的子字符串。 | substring("Notion", 0, 3) = "Not" |
substring("Notion", 3) = "ion" |
||
contains | 如果搜索字符串出现在值中,则返回 true。 | contains("Notion", "ot") = true |
test | 如果值匹配正则表达式,则返回 true;否则返回 false。 | test("Notion", "Not") = true |
test("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 | 从标签文本和网址创建超链接。 | 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) = 15 |
5 + 10 = 15 |
||
subtract | 返回两个数字的差。 | subtract(5, 10) = -5 |
5 - 10 = -5 |
||
multiply | 返回两个数字的乘积。 | multiply(5, 10) = 50 |
5 * 10 = 50 |
||
mod | 返回第一个数字对第二个数字取模的结果。 | mod(5, 10) = 5 |
5 % 10 = 5 |
||
pow | 返回基数的指数幂的结果。 | pow(5, 10) = 9765625 |
5 ^ 10 = 9765625 |
||
divide | 返回两个数字的商。 | divide(5, 10) = 0.5 |
5 / 10 = 0.5 |
||
min | 返回参数中最小的数字。 | min(1, 2, 3) = 1 |
min([1, 2, 3]) = 1 |
||
max | 返回参数中最大的数。 | max(1, 2, 3) = 3 |
max([1, 2, 3]) = 3 |
||
sum | 返回其参数的总和。 | sum(1, 2, 3) = 6 |
sum([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) = 10 |
abs(-10) = 10 |
||
round | 返回一个数四舍五入到最接近的整数的值。 | round(0.4) = 0 |
round(-0.6) = -1 |
||
ceil | 返回大于或等于给定数字的最小整数。 | ceil(0.4) = 1 |
ceil(-0.6) = 0 |
||
floor | 返回小于或等于给定数字的最大整数。 | floor(0.4) = 0 |
floor(-0.6) = -1 |
||
sqrt | 返回给定数字的正平方根。 | sqrt(4) = 2 |
sqrt(7) = 2.6457513110645907 |
||
cbrt | 返回给定数字的立方根。 | cbrt(9) = 2.080083823051904 |
cbrt(64) = 4 |
||
exp | 返回 e^x,其中 x 是参数,e 是欧拉数(2.718…),自然对数的底数。 | |
exp(1) = 2.718281828459045 |
||
exp(-1) = 0.36787944117144233 |
||
ln | 返回数字的自然对数。 | ln(2.718281828459045) = 1 |
ln(10) = 2.302585092994046 |
||
log10 | 返回数字的以 10 为底的对数。 | log10(10) = 1 |
log10(100000) = 5 |
||
log2 | 返回数字的以 2 为底的对数。 | log2(4) = 2 |
log2(1024) = 10 |
||
sign | 如果数字为正数,则返回 1,如果数字为负数,则返回 -1,如果数字为零,则返回 0。 | sign(-10) = -1 |
sign(10) = 1 |
||
pi | 返回圆的周长与直径的比值。 | pi() = 3.141592653589793 |
e | 返回自然对数的底数。 | e() = 2.718281828459045 |
toNumber | 从文本中解析出一个数字。 | toNumber("2") = 2 |
toNumber(now()) = 1693443300000 |
||
toNumber(true) = 1 |
||
now | 返回当前日期和时间。 | now() = @August 30, 2023 5:55 PM |
today | 返回没有时间的当前日期。 | |
today() = @April 19, 2024 |
||
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 PM |
dateAdd(now(), 2, "months") = @October 30, 2023 5:55PM |
||
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 PM |
dateSubtract(now(), 2, "months") = @June 30, 2023 5:55 PM |
||
dateSubtract(now(), 3, "years") = @August 30, 2020 5:55 PM |
||
dateBetween | 返回两个日期之间的差异。单位参数可以是以下之一:"years" 、"quarters" , "months" 、"weeks" 、"days" 、"hours" 或 "minutes" 。 |
dateBetween(now(), parseDate("2022-09-07"), "days") = 357 |
dateBetween(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, 2022 |
dateBetween(dateStart(prop("Date Range")), dateEnd(prop("Date Range")), "days") = -365 |
||
dateEnd | 返回日期范围的结束。 | dateEnd(prop("Date range")) = @September 7, 2023 |
dateBetween(dateEnd(prop("Date Range")), dateStart(prop("Date Range")), "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" |
||
parseDate | 根据 ISO 8601 标准返回解析后的日期。 | parseDate("2022-01-01") = @January 1, 2022 |
parseDate("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 | 连接符放置在每个列表的值之间,以字符形式返回 | 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") = true |
includes([1, 2, 3], 4) = false |
||
find | 返回第一个满足条件的列表项。 | find(["a", "b", "c"], current == "b") = "b" |
find([1, 2, 3], current > 100) = Empty |
||
findIndex | 返回满足条件的列表中第一项的索引。 | findIndex(["a", "b", "c"], current == "b") = 1 |
findIndex([1, 2, 3], current > 100) = -1 |
||
filter | 返回满足条件的列表中的值。 | filter([1, 2, 3], current > 1) = [2, 3] |
filter(["a", "b", "c"], current == "a") = ["a"] |
||
some | 如果列表中的任何项满足给定条件,则返回 true;否则返回 false。 | some([1, 2, 3], current == 2) = true |
some(["a", "b", "c"], current.length > 2) = false |
||
every | 如果列表中的每一项都满足给定条件,则返回 true;否则返回 false。 | every([1, 2, 3], current > 0) = true |
every(["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(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 |