Lazy loaded image
Formulas(horange_background
00 分钟
2022-3-23
狀態
🕓 待更新
Last edited by
負責編輯人
最後更新
在 Notion 的 Database(資料庫)中,你可以新增 formula(公式)property(屬性),該 properties (屬性)可以使你基於其他 properties (屬性)進行各種運算和函數。正如在 Excel 或者 Google Sheet 中那樣,你可以在 Notion 中使用公式求和以及獲取其他許多有用的值。⚗️
我們知道這部分會很複雜,所以需要我們幫忙時,不要猶豫,告訴我們。
 

公式術語

書寫公式時最最艱難的就是理解所有的術語了!😅 以下是你在 Notion 中使用公式時最常見的詞語以及它們的含義:
  • Function(函數):一組輸入值與一組可能的輸出值之間的關係,每個輸入僅與唯一的輸出相關聯。
  • Syntax(語法):指的是公式中能夠返回正確值的字母和術語的順序。
  • Argument(參數):指的是函數中的任意輸入值,如一個屬性。
  • String(字串):通常指的是文字(即一串相連的文字)。公式中,字串往往被包在引號中。
    • Substring(子字串)指的是一個長字串中的一段。「No」就是「Notion」的子字串。
  • Boolean(布林):布林非 true(真)即 false(假)。
  • Concatenate(連接):連接兩個字串。
    • 例:concat("add", "text") 會變成 "addtext"

操作中的術語

一個可以把上述術語串在一起的例子:concat("add", "text")
  • concat 就是函數。它對其圓括號中的輸入值應用特定的計算或者操作。
  • "add""text" 就是函數的參
  • 每個參數都是文字類型(或者是字串)。
  • 函數可以使用各種類型不同的參數,例如 checkbox(核取方塊)(也就是布林)、數字或者日期。
  • 函數的語法要求用引號包圍字串,而其參數則需要用圓括號包圍。

寫一個公式

  • 首先,在 Database(資料庫)中添加一個新屬性並命名,從 Property Type(屬性類型) 選單中選擇 Formula(公式)
  • 為了讓公式對屬性進行操作,你需要輸入一個函數,這個函數會用到該屬性。
  • 屬性的操作很像公式中的變數。使用你給它起的名字就可以操作它。
  • 你可以像輸入數字計算器一樣輸入函數(還記得嗎?)。記得用圓括號和引號包圍屬性!
  • 例子:與 21 歲差多少年?
    • 假設 Database(資料庫)中有一個數字類型的屬性,名為 Age,而你想要用公式屬性顯示人的年齡與 21 歲的差距。
    • 輸入 21 - prop("Age") 即可返回 21 減去資料庫中每個人的年齡屬性值的結果。
notion image

公式選單

當你編輯一個公式屬性時,公式視窗就會自動彈出。該視窗的左側選單包含以下部分:
  • Properties:列出資料庫中用到的所有屬性。按一下即可用對應的格式插入到公式中。
  • Constants:常用的常數,比如圓周率(Pi)。按一下即可新增到公式中。
  • Operators:可以運行的簡單運算。左側的圖示顯示了它支援的屬性類型。例如,Subtraction(減法)和 Addition(加法)只支持數字類型。
  • Functions:可以在 Notion 中運行的更複雜的、預先定義的公式。同樣,左側的圖示顯示了它支持的屬性類型。
  • 在視窗頂部的文字框輸入文字,即可搜尋到你需要的以上內容。
  • 你還可以用方向鍵上下捲動來查看列表。
🎒
小技巧將游標懸浮在側邊欄中的列表項上,即可看到完整的釋義,詳細說明瞭使用方法和範例。
notion image
 
  • 例子:距離期限的天數
    • 有一個任務資料庫,列出了對應的期限。我們的目標是計算出當前日期距離期限還剩多少天。
    • 對於資料庫中的每個任務,用日期屬性設定一個期限。
    • 然後,新增一個新屬性,並從 Property Type(屬性類型) 選單中選擇 Formula。將它命名為「剩餘天數」。
    • 在表格中,按一下公式列中的任意儲存格,打開編輯公式視窗。
notion image
 
  • 在文字框中,輸入 date 檢索出與日期相關的命令。dateBetween() 看起來有用 —— 它會以我們需要的時間單位返回兩個日期之間的時間。
notion image
 
  • 根據此函數的介紹,你需要給定兩個日期以及一些文字:截止日期、當前日期、需要的日期單位(years、months、days,等等)。
notion image
 
  • 在公式側邊欄頂部的 Properties 類目下點擊截止日期的屬性名,或者直接輸入 prop("Deadline") 將截止日期插入到 dateBetween() 函數中。
notion image
 
  • 現在,我們的公式長這樣:dateBetween(prop("Deadline"))。讓我們來找找如何獲取當前日期。now() 看起來有用,因為它會傳回目前日期。
  • 按如下步驟完成函數:
    • 首先,新增一個逗號,表示我們想要得出截止日期和當前日期的時間差:dateBetween(prop("Deadline"), now())
    • 然後,根據函數的說明,定義我們想要的時間單位:dateBetween(prop("Deadline"), now(), "days")
    • 最後,點擊 Done,對資料庫應用此函數。
    • 大功告成!現在你就能知道距離截止日期還剩多少天了 🙌
notion image

常用範例

我們匯集了一些常用的公式範例,並附上書寫方法 👇

自動勾選核取方塊

你可以寫一個公式,讓資料庫中的核取方塊根據其他屬性值自動判斷勾選狀態。
  • 目標:如果 Priority 為空或者包含「Important」,則勾選核取方塊。 Copy of Demo
    • 公式or(empty(prop("Priority")), prop("Priority") == "Important")
Demo
Name
Priority
Has Value?
此公式對資料庫中的 Select 屬性同樣適用。在本例中,如果 Select 屬性的值為「Option 1」,則核取方塊為選中狀態。
  • equal(prop("Select"), "Option 1")
Demo
Name
Select
Checkbox
Option 1
Option 2
 

日期計算

使用資料庫中的日期屬性,你可以計算各種時間範圍。
Demo
Name
Start Date
End Date
Years Employed
Years Remaining
Formatted Text
Jul 18, 2015
Jul 18, 2030
NaN years, undefined months
  • 目標:在「Years Employed」下面顯示 Doug 到目前為止被雇用的年數。
    • 公式dateBetween(now(), prop("Start Date"), "years")
  • 目標:在「Years Remaining」下面顯示 Doug 的剩餘工作年限。
    • 公式dateBetween(prop("End Date"), now(), "years")
  • 目標:在「Formatted Text」下面,用年和月顯示 Doug 的剩餘工作時間。
    • 公式concat(format(prop("Years Employed")), " years, ", format(dateBetween(prop("End Date"), now(), "months")), " months")

四捨五入公式

這些公式可以用不同的方法來四捨五入。
  • 捨入為整數:用 round() 包圍你的公式
    • 例子:round(prop("One)" / prop("Two"))
  • 保留一位小數:用 round(*10)/10 包圍你的公式
    • 例子:round(prop("One") / prop("Two") * 10) / 10
  • 保留兩位小數:用 round(*100)/100 包圍你的公式
    • 例子:round(prop("One") / prop("Two") * 100) / 100

在日期中新增星期幾

獲取日期並在公式屬性中自動識別星期幾。
  • formatDate(prop("Date"), "dddd, MMMM D, YYYY")

過期提醒

如果已經超過期限,則自動勾選。對個人 CRM 很有幫助,你可以設定一個你想要聯繫某人的日期,然後反複執行。
  • prop("Due Date") < now()
🎒
小技巧:我們會持續從團隊和社區收集有用的公式。請保持關注!如果你有想要分享的公式,請發送到 [email protected].。

故障排除

在使用公式時,你可能會遇到一些報錯訊息:
  • Type mismatch: prop("Number") is not a Text
    • 這意味著你在使用的公式只支持文字屬性。
    • 應對辦法是,嘗試用 format() 包圍數字屬性。
    • 例如: prop("Number") + prop("Text") 會報錯。 可以改為:format(prop("Number")) + prop("Text")
  • Too few arguments in function if
    • 這意味著你可能漏寫了「else」語句。
    • 嘗試在公式末尾用 , "") 的方式新增 「else empty」 語句。
    • 例子: if(prop("1") == "this", "that") 會報錯。
      • 可以改為:if(prop("1") == "this", "that", "")

常見問題:

有沒有辦法在看板裡用 Group By(以……分組) 給關聯或公式屬性分組?
現在還不行。😓但這是個不錯的使用案例,未來我們絕對會支持這個功能。

相關指南

 
 
上一篇
读书盘点|2022年世界读书日
下一篇
第三周刊_No.34|母女之间:阿克曼、波伏瓦、费兰特,她们这样书写母亲