Notion Formula 2.0 § 迷你月曆

閱讀時間約 8 分鐘

前言

寫到這篇時,有點小疲累🤣,但我還是會盡力將公式逐步拆解,並用中文註解,讓理解過程更直觀。

在開始拆解公式之前,想先分享一下我在學習公式編寫時的心路歷程,還有如何加入個人需求來增強實用性。接著會帶大家一起編寫這個「迷你月曆」,不過只會說明關鍵步驟,若想獲得完整的工具公式,可以參考這裡的〈Notion 模板 § 小工具_迷你月曆〉。

編寫公式前的準備

在動手編寫公式前,先要明確理解預期結果,進行基本的邏輯推演和需求分析。若無法直接從公式看出結果,可將公式拆分並逐段放入欄位中觀察輸出,尤其是數據型態的呈現。

過程中透過不斷的試錯來調整寫法,再根據個人需求重組步驟(預期結果 → 分析 → 分段拼湊),最終便能設計出符合需求的公式。

分析需求

raw-image

這次我們將利用資料庫製作小月曆。在編寫公式之前,先分析一下迷你月曆的呈現方式:

  • 頂部顯示星期標題,需以粗體字呈現,且「Week」的「W」是以橘色顯示。
  • 第一欄顯示周數,一年有 52 至 53 周,第 53 周需以隔年的資料顯示為 01。
  • 如果月曆中出現「今天」的日期,該日期背景要呈現橘色,且對應周的數字也應為橘色。

手動設置迷你月曆

設置標題欄,並更改樣式

利用 style() 方法將周數欄的「W」設置成橙色粗體,並讓星期的縮寫也保持粗體顯示。

lets(
欄位, ["W".style("b", "orange"), "M".style("b"), "T".style("b"), "W".style("b"), "T".style("b"), "F".style("b"), "S".style("b"), "S".style("b")]
.........
)

計算月份和周數

取得當前月份 (月份) 和周數 (現在在哪周) 以及該月份的起始與結束周數(月初所在周月底所在周)。

  • 使用 dateStart()dateEnd() 確認每月的首尾並格式化周數。
  • 利用 now().formatDate("W") 取得今天所在周數。
lets(
.........
月份, prop("日期").dateStart().month(),
現在在哪周, now().formatDate("W").toNumber(),
月初所在周, dateStart(prop("日期")).formatDate("W").toNumber(),
月底所在周, dateEnd(prop("日期")).formatDate("W").toNumber()
.........
)

計算本周周一的日期

確定本周的第一天的日期(周一的日期),作為接下來週計算的基準。

lets(
.........
本周周一日期, prop("日期").dateStart().dateSubtract(prop("日期").dateStart().day() - 1, "days")
.........
)

計算「月份跨越的周數」與「月份在哪幾周」

計算當前月份跨越了幾周,並確定這些周數是哪幾周。

lets(
.........
月份跨幾周, if(月底所在周 == 1 and 月份 == 12, 53, 月底所在周)
- if(月初所在周 <= 53 and 月初所在周 > 51 and 月份 == 1, 0, 月初所在周) + 1,
月份在哪幾周, "x".repeat(月份跨幾周).split("").map(dateStart(prop("日期"))
.dateAdd(index * 7, "days").formatDate("W").toNumber())

.........
)

「每周」的日期顯示

  • 設置一周內的七天對應日期,並調整樣式。
  • 本周日期:每周一日期,加上 index * 7 計算得出每周的開始日。
  • 星期.map:針對一周中的每一天進行處理,設定樣式。
    • 日期.month() 不等於目標月份則顯示空白,否則顯示日期並加上 .style() 樣式。
    • 當天日期的背景為橘色。
    • 當天對應的所在周的周數顯示為橘色數字。
lets(
...........
, 月份在哪幾周.map(
[ /* 今天所在周,特別顏色顯示 */
(if(current < 10, "0", "") + current).style(ifs(current == 現在在哪周, "orange",current < 現在在哪周, "gray","")),

/* 一周中有哪幾天 */
lets(
本周日期, 本周周一日期.dateAdd(index * 7, "days"),
星期, [1,2,3,4,5,6,7],
星期.map(
let(日期, 本周日期.dateAdd(index, "days"),
if(
日期.month() != 月份, " ",
日期.formatDate("DD").style(ifs(日期 == today(), "orange_background", 日期 < today(), "gray","")
)
)
)
)
).flat()
]
),
............
)

組合欄位和周顯示

lets(
...........
欄位.join(" ")
+ "\n"
+.map(current.first() + " " + current.last().join(" ")).join("\n")
)

這種設置適合「月回顧」等應用場景,不僅能顯示當月目標與待辦事項,也能回顧上月底對本月的期待。

若你不需要月回顧或覺得手動設置麻煩,可以考慮購買 👉 「小工具_萬年曆」,自動顯示當月月曆,省去手動設置的步驟。只需將模板複製到 Notion 中,再放置到需要的位置即可。

迷你月曆的操作流程

  1. 需要在日期欄位中輸入月份區間,Name欄位可輸入也可空白。
  2. 切換到 Gallery View,預設顯示本月的月曆。
  3. 將月曆放置在您想要呈現的筆記頁面位置即可。
raw-image

注意事項

記得選用「Mono」字體,這樣排版才會整齊。

範例頁面

迷你月曆

模板連結

參考資料

  • Discord 群組
114會員
77內容數
小小的細縫裡,夢想的小苗也會萌芽。 我想在餘生中,體會生命的感動和奧秘。 透過仔細觀察,將發現世界不同的美好。 歡迎你來到 ~ ♡ Chloe 的小世界 ♡
留言0
查看全部
發表第一個留言支持創作者!
Chloe小窩 的其他內容
Notion Formula 2.0 日期公式運用第二篇:工作日計算(可自訂國定假日、特殊假期)
Notion Formula 2.0 日期公式運用第一篇:倒數進度條、x年回顧彩蛋、生日提醒。
如果你覺得過多的 Rollup 拖累了你的 Notion 呈現速度,那如何不依賴 Rollup 功能,來實現資料統計的效果呢?
分享 Notion 中與日期有關的公式,隨著更新升級,使得公式編輯更加簡潔。本篇文章重點介紹與日期時間相關的函數,並提供練習題,幫助讀者靈活運用這些公式。
Notion Formula 2.0 日期公式運用第二篇:工作日計算(可自訂國定假日、特殊假期)
Notion Formula 2.0 日期公式運用第一篇:倒數進度條、x年回顧彩蛋、生日提醒。
如果你覺得過多的 Rollup 拖累了你的 Notion 呈現速度,那如何不依賴 Rollup 功能,來實現資料統計的效果呢?
分享 Notion 中與日期有關的公式,隨著更新升級,使得公式編輯更加簡潔。本篇文章重點介紹與日期時間相關的函數,並提供練習題,幫助讀者靈活運用這些公式。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
只需要一個資料庫就可以做到各種不同的用途顯示 像紙本的五年手帳一樣,可以自動回顧「過去的今天」的日記模板要如何設定? 函數設定的思路與教學都在這邊了! 免費日記模板下載
Thumbnail
在日常工作中,我們經常需要計算兩個日期之間的天數。無論是計算專案進行的天數、員工的工作天數,還是活動的剩餘天數,這些操作在EXCEL中都能輕鬆實現。 其實日期要計算天數超級簡單 日期天數=結束日期-開始日期+1 為什麼要+1呢? 可以讀一下這篇⬇️ 🔗EXCEL小知識 | 計算日期
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
只需要一個資料庫就可以做到各種不同的用途顯示 像紙本的五年手帳一樣,可以自動回顧「過去的今天」的日記模板要如何設定? 函數設定的思路與教學都在這邊了! 免費日記模板下載
Thumbnail
在日常工作中,我們經常需要計算兩個日期之間的天數。無論是計算專案進行的天數、員工的工作天數,還是活動的剩餘天數,這些操作在EXCEL中都能輕鬆實現。 其實日期要計算天數超級簡單 日期天數=結束日期-開始日期+1 為什麼要+1呢? 可以讀一下這篇⬇️ 🔗EXCEL小知識 | 計算日期