使用 Google Calendar API 製作以農曆為基礎的「六齋日」日曆


利用假期,早上和美國的同事開完會後,開始動手寫了一個小程式,自動產生了「六齋日」 Google 日曆,包含了這個世紀末之前的 5,455 個「六齋日」。

對於軟體工程師來說,寫好一個程式特別感到充實啊!寫程式的時候根本不需要番茄鐘,幾個小時瞬間就過去了! XD

Motivation


在家居士在六齋日持八關齋可避免墮三惡道,趣向人、天、涅槃。

六齋日是農曆每個月的第 8 日、第 14 日、第 15 日、第 23 日、第 29 日、第 30 日。

如果能夠在 Google calendar 上自動標註今天是六齋日,有助於八關齋的奉持。

但 Google calendar 並無法以農曆為基礎設定 recurrence events,於是動手寫 JavaScript 自動把從今天到這個世紀末之前的 5,455 個六齋日加入 Google calendar。

Approach


以 JavaScript 撰寫 web application,判斷從今天起到這個世紀末的最後一天,每一天是否為六齋日,若是,則透過 Google Calendar API 把 event 加入 Google calendar。

1. 接通 Google Calendar API, 列出某個 calendar 的 events.
Source Code: index.html

Web Page: index.html

注意: 要把 CLIENT_ID, API_KEY, calendarId 改成你自己的.

參考資料: Google Calendar API: Browser Quickstart
2. 使用 Google Calendar API 新增一個 calendar event.
Source Code: insert_event.html

Web Page: insert_event.html

參考資料: Google Calendar API: Events: insert
3. 把陽曆日期轉換為農曆日期
Source Code: solar2lunar

Web Page: solar2lunar

參考資料: Lunar-Solar-Calendar-Converter
4. 列出從 2020-04-02 到 2099-12-31 所有的六齋日
Source Code: iterate_six_commandment_days

Web Page: iterate_six_commandment_days
5. 新增從 2020-04-02 到 2099-12-31 所有的六齋日到 Google calendar
Source Code: insert_six_commandment_days

Web Page: insert_six_commandment_days

Result


完成的日曆: 六齋日日曆 (按右下角的 "+ Google Calendar" 可以把這個日曆加到你的 Google calendar).

新增 5,455 個 Google calendar events 的 Log.