在 2022 年,我曾分享過一篇〈如何在 Notion 中獲取隨機數〉,當時是根據 Matthias Frank 的文章內容學習寫下的筆記。現在我們要將公式更新至 2.0 版本,並且除了本來提到的自動變化隨機數以外,一併整理按鈕版的公式設置。
我曾提過公式 2.0 的好處,這次範例進一步展現了它的優點。以前需要七個以上欄位的公式,現在只需一個欄位即可完成,讓我們有更多欄位空間來呈現其他資訊。
為何我特別關注欄位的使用數呢?曾在國外論壇中看到一個說法,指稱 Notion 免費帳戶的資料庫可能限制在 20 個屬性欄位。雖然我沒有找到官方的宣稱紀錄,但這提醒了我,如果 Notion 未來恢復欄位數量的限制,我們需更加有效地使用每個欄位。
PS. 引用這個說法並非想引發擔憂,我已測試過免費帳戶,目前(至少本文發布時)一個資料庫仍可超過 20 個屬性欄位。
時間自動更新的隨機數配置,可應用於「每日名言」、「卡片筆記的靈感卡片」等,這樣可以隨機看到不同內容,增添驚喜感。
透過按鈕來手動更改數字的設置,則適合於「抽卡」、「抽禮物」、「找吃的」等場景。可以進一步細分類別,只需加入標籤並設計多個按鈕,就能隨時進行特定類別的隨機選擇。
公式邏輯其實簡單:當固定數值(ID
)與隨機數(now()
)匹配時即為真。
由於 timestamp()
的顯示單位為分鐘,因此若僅使用 timestamp()
,同一分鐘內建立的資料會有相同數值。為避免重複,固定數值需搭配 id()
。而 now()
則提供了隨著時間變化的動態值,是實現自動更新的理想選擇。
/* 產生隨機日期 */
lets(
ID處理值, id().replaceAll("[a-z]", "").substring(0, 8).toNumber(),
常數_1, (ID處理值 * 800067089 + 800068411) % 800053967 + 900067309,
常數_2, (ID處理值 * 100011979 + 500067713) % 900066731,
靜態數值, (prop("Created Time").timestamp() * 100011979 + 500067713) % 900066731,
動態數值, (now().timestamp() * 800067089 + 800068411) % 800053967 + 900067309,
固定值, (靜態數值 * 常數_1) % 900066571,
變動值, (動態數值 * 常數_2) % 900066571,
隨機時間戳, format(固定值 * 變動值).substring(0, 13).toNumber(),
隨機日期, fromTimestamp(隨機時間戳),
隨機日期
)
過去若要顯示最大日期,我們需要透過 Rollup
功能來實現,但現在可以直接使用 map()
、sort()
、last()
來完成相同的效果,簡化了流程。
/* 在計算機的顯示的公式 - 最大日期 */
map(prop("魔法口袋"),current.prop("隨機日期")).sort().last()
需要注意的是,map()
的輸出是列表格式,因此隨機日期也必須以列表形式呈現,才能正確進行比較。
map(prop("計算機"),current.prop("最大日期")) == [prop("隨機日期")]
最後,請記得啟用篩選器,並選擇唯一隨機碼
為checked
的項目。
首先,新增一個日期時間欄位,記錄按鈕按下後的當下時間,我們先將此欄位命名為「現在」。同時需將上方公式中的「動態數值」裡的 now()
改成 prop("現在")
。
/* 產生隨機日期 */
lets(
ID處理值, id().replaceAll("[a-z]", "").substring(0, 8).toNumber(),
常數_1, (ID處理值 * 800067089 + 800068411) % 800053967 + 900067309,
常數_2, (ID處理值 * 100011979 + 500067713) % 900066731,
靜態數值, (prop("Created Time").timestamp() * 100011979 + 500067713) % 900066731,
動態數值, (prop(”現在”).timestamp() * 800067089 + 800068411) % 800053967 + 900067309,
固定值, (靜態數值 * 常數_1) % 900066571,
變動值, (動態數值 * 常數_2) % 900066571,
隨機時間戳, format(固定值 * 變動值).substring(0, 13).toNumber(),
隨機日期, fromTimestamp(隨機時間戳),
隨機日期
)
在計算機的資料庫中,除了Relation以外,還要再加入下面的公式。
在計算用的資料庫中,除了 Relation
外,如同上面範例一樣,需要顯示所有資料的日期,並找到最大的日期。
/* 在計算機的顯示的公式 - 最大日期 */
map(prop("百寶箱"),current.prop("隨機日期")).sort().last()
之後,只需回到原本的資料庫,對照最大日期與隨機日期值,即可完成設置。
map(prop("計算機"),current.prop("最大日期_百寶箱")) == [prop("隨機日期")]
最後,新增一個「按鈕」,當需要觸發隨機數(例如抽獎)時,只需點擊按鈕,隨機數就會自動刷新。設置條件為:將指定資料庫中的「現在」欄位更新為當前時間,以觸發隨機變化。
如果大家對這個隨機數的應用有興趣,但不知道怎麼下手,可以參考我之前寫過的〈Notion 模板_塔羅日記〉。此外,如果你有任何新奇、有趣的點子,也非常歡迎分享給我!
我發現,隨著筆記的累積,現在能不斷引用過去的紀錄,這種體驗真的很奇妙!彷彿系統中的每個小片段,彼此緊密相連,慢慢形成一片網子❤️,也希望大家能建立自己的筆記系統,體驗這樣的美好❤️。