我們從〈Notion Formula 2.0 § 基礎篇_1〉中學習了不少函數。這篇文章除了介紹更多函數外,也會嘗試「組合技」~
雖然 Notion Formula 2.0 中沒有內建「迴圈」功能,但有程式經驗的朋友都明白,迴圈的設計可以創造更多可能性。那如果我們要模擬迴圈的效果,也就是根據條件重複出現特定值,該怎麼做呢?
除了之前提到的函數外,今天要額外介紹三個關鍵函數:repeat()
、split()
、join()
。
在展示如何模擬迴圈前,我們先來了解這些函數的使用規則。
顧名思義,repeat()
是用來重複指定值的函數。它需要兩個參數:特定的值和重複的次數。例如,repeat("0", 4)
會呈現 "0000
"。 你也可以試試更有趣的用法,如:repeat("★", 2).style("blue") + repeat("☆", 2).style("yellow") + repeat("★", 2).style("blue")
,結果會呈現“★★☆☆★★
”(這裡無法顯示顏色😭)。
首先,我們在資料庫中設置兩個欄位,並使用 repeat()
根據 欄位二
的數字,重複 欄位一
的內容。
/* 編寫法一 */
prop("欄位一").repeat(prop("欄位二"))
/* 編寫法二 */
repeat(prop("欄位一"), prop("欄位二"))
在處理數據時,列表(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(["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 模板更加直觀和強大。讓我們一起學習這些應用吧!