
简介
Notion 函数可以通过各种属性和方法来操作。在这里,你将找到它们 ➗
<aside> <img src="/icons/attachment_orange.svg" alt="/icons/attachment_orange.svg" width="40px" />
<aside> <img src="/icons/light-bulb_blue.svg" alt="/icons/light-bulb_blue.svg" width="40px" />
你知道自己想要函数实现什么效果,但不确定如何构建它?你可以使用 Notion AI 来创建和编辑函数。在 此处 了解更多 →
</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 |