2024-10-08|閱讀時間 ‧ 約 23 分鐘

Notion Formula 2.0 § 基礎篇_2

前言

我們從〈Notion Formula 2.0 § 基礎篇_1〉中學習了不少函數。這篇文章除了介紹更多函數外,也會嘗試「組合技」~

學習環境建置

函數

雖然 Notion Formula 2.0 中沒有內建「迴圈」功能,但有程式經驗的朋友都明白,迴圈的設計可以創造更多可能性。那如果我們要模擬迴圈的效果,也就是根據條件重複出現特定值,該怎麼做呢?

除了之前提到的函數外,今天要額外介紹三個關鍵函數:repeat()split()join()

在展示如何模擬迴圈前,我們先來了解這些函數的使用規則。

Repeat()

顧名思義,repeat() 是用來重複指定值的函數。它需要兩個參數:特定的值和重複的次數。例如,repeat("0", 4) 會呈現 "0000"。 你也可以試試更有趣的用法,如:repeat("★", 2).style("blue") + repeat("☆", 2).style("yellow") + repeat("★", 2).style("blue"),結果會呈現“★★☆☆★★”(這裡無法顯示顏色😭)。

首先,我們在資料庫中設置兩個欄位,並使用 repeat() 根據 欄位二 的數字,重複 欄位一 的內容。

/* 編寫法一 */
prop("欄位一").repeat(prop("欄位二"))

/* 編寫法二 */
repeat(prop("欄位一"), prop("欄位二"))

Split()

在處理數據時,列表(list)形式讓資料處理的過程變得更加靈活,尤其是使用索引值。split() 需要兩個參數:第一個是要拆分的字串,第二個是分隔符號。例如:split("apple,pear,orange", ",")呈現的結果為["apple", "pear", "orange"]。

prop("欄位一").repeat(prop("欄位二")).split("")

從範例中我們可以看到:

  • 當沒有使用split()的欄位中,資料呈現為[CDCDCD]
  • 使用split("")後,資料被拆分為[C, D, C, D, C, D]
  • 使用split("C")後,資料變為[D, D, D]

當分隔符號與列表中的資料相同時,它會替代該符號來拆分數據。需要注意的是,這些結果都是字串 (String) 形式。如果希望對數據進行數值運算,需要將資料類型轉回數字格式。

/* 資料是文字屬性 */
split(prop("欄位二"), 2)

/* 資料轉為數字屬性 */
split(prop("欄位二"), 2).map(toNumber(current))

Join()

join() 函數可以將列表中的元素以指定的分隔符連接成一個完整的值。

例如:join(["a", "b", "c"], "1") 會生成「a1b1c」。需要注意的是,結果的資料屬性是字串格式。

join(prop("數字屬性"), "")

迴圈效果

在接下來的文章中,我們會處理日期區間,並顯示這段期間內的所有日期。

單來說,這類運算就像是 開始日期 + 0開始日期 + 1開始日期 + 2……逐步遞增日期。

lets(
日期區間, prop("日期"),
開始日期, 日期區間.dateStart(),
結束日期, 日期區間.dateEnd(),
間隔天數, dateBetween(結束日期, 開始日期, "days"),
迴圈, "x".repeat(間隔天數).split("x"),
所有日期, if(
間隔天數 == 0, 開始日期,
迴圈.map(開始日期.dateAdd(index, "days"))
),
所有日期
)

結論

結合前篇文章〈Notion Formula 2.0 § 基礎篇_1〉,我們已經學習了大部分函數的基礎概念,這些工具讓我們能更靈活地處理數據。

接下來,我們將探討如何使用公式 2.0 來製作 Progress Bar 進度條,讓你的 Notion 模板更加直觀和強大。讓我們一起學習這些應用吧!

範例及其他資源

範例頁面

Notion 函數指南

參考資料

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.