行事曆
行事曆匯出是怎麼運作的,從連接到排查問題。
連接
在 Exporter 首頁的行事曆旁按「連接」,然後按「打開行事曆資料夾」。視窗會在行事曆自己的資料夾 ~/Library/Group Containers/group.com.apple.calendar 裡開啟:按「選擇此資料夾」。然後選擇檔案存放位置,並按「使用這個資料夾」。
macOS 不會索取行事曆權限,Exporter 也從不索取:行程是從你授權的那個資料夾裡的資料庫讀出來的,不走 EventKit。你在別的 app 見過的權限對話框,屬於另一條路。
檔案去哪裡
每月一個 Markdown 檔案,放在同一個資料夾裡:2026-09.md、2026-10.md。直接位於個人資料夾下的目錄,例如 ~/Documents,裡面會建立一個 calendar-export 資料夾;更深的目錄,例如 ~/Documents/calendar,會原樣使用。沒有行程的月份不會產生檔案。
匯出哪些內容
卡片上勾選的行事曆裡的每個行程,都在設定的時間範圍內。選擇器依帳號把行事曆歸類,和行事曆的側邊欄一樣,所以取消一個勾就能排除一個帳號。
一個行程歸入它開始的那個月,只歸一次,即使它延續到月底之後也一樣。
重複
重複的行程出現在每個發生的日子裡,而不只是建立它的那天。Exporter 讀的是行事曆為自己的檢視保存的發生紀錄,所以檔案和 app 一致,行裡也會寫明它如何重複。
格式
一律是 Markdown:月份的前置資訊,然後每天一個標題、每個行程一行。
一天從全天行程開始,然後按開始時間排列,這正是行事曆畫它的順序。全天行程寫「all day」,絕不會憑空多出一個 00:00。
檔案內容
| 鍵 | 內容 |
|---|---|
title、month |
「行事曆,2026 年 9 月」和 2026-09 |
events |
這個檔案裡有多少行程 |
calendars |
當月的行事曆,最多的排在前面 |
一行是時間、行程、來自哪個行事曆、在哪裡,之後是 vault 可以查詢的欄位:
| 欄位 | 內容 |
|---|---|
repeats:: |
daily、weekly、every 2 weeks |
join:: |
行程帶有視訊通話連結時的連結 |
with:: |
有多少人參加 |
## 2026-09-17, 星期四
- all day 瑪麗蓮生日 · 生日
- 09:30-10:00 站立會議 · 工作 · Zoom [repeats:: weekly] [with:: 6]
- 13:00-14:00 和 Kevin 吃午餐 · 個人 · Philz Coffee
往回讀多久
卡片上的「reads」一行:今年、2 年、5 年或全部。它決定寫出哪些檔案,範圍越窄匯出越小。
行事曆為自己的檢視保存大約兩年的發生紀錄,能讀的也就這些:在真實的 Mac 上,2 年、5 年和全部回傳的是同一批行程。「全部」指這台 Mac 上有的全部,而不是曾經發生過的全部。
免費與解鎖
前 100 個事件免費,而且一直免費。解鎖行事曆會匯出其餘部分(價格)。
同步與完全重新同步
第一次「sync now」之後,只要某個月裡有變動,Exporter 就會重寫那個月,最快每分鐘一次。移動一個行程只會重寫它所在的那個月。
「full resync」會先詢問,然後刪除 Exporter 寫過的月份檔案,並把每個勾選的行事曆重新寫一遍。資料夾裡的其他東西都會保留。
問題與辦法
- 「no calendar database in that folder (pick the Calendar folder itself)」:再次按「connect」,選擇視窗開啟時所在的那個資料夾
- 少了一個行事曆:它在卡片上被取消了勾選,或者整個帳號被取消了。選擇器依帳號歸類
- 少了舊行程:「reads」那一行設成了更短的範圍,或者行事曆自己也不再保存它們
- 提醒事項混進了匯出:行事曆會把安排了時間的提醒事項顯示為一個單獨的行事曆。在卡片上取消「Reminders」帳號的勾選