最近想在家中儲備防災物資,以及發現有時候零食、化妝品,一沒注意很容易放到過期,所以想把保存期限存到google 日曆,讓它時間接近時跳出提醒。但感覺每次拿 google日曆自己逐筆建活動很麻煩,於是就請chatGPT指點和產程式碼,做出一個可以 填google表單→資料寫入google sheet→由App Script自動在日曆建立活動的小工具。如果覺得在sheet一次key多筆資料比較方便,也可以省略google表單的步驟。
小工具包含以下功能:
- 新增:填寫google表單/在試算表加入資料,就會建立日曆事件
- 更新:如果修改試算表中的資料內容(品名、保存期限等),也會同步更新到日曆的活動
- 刪除:清除試算表中的資料,就會將該筆日曆活動刪除
一、設置一個獨立的google日曆
- 建立一個專屬的日曆,例如命名為 「保存期限提醒」。
- 這樣提醒事件不會跟其他行程混在一起,更清楚。
二、建立google表單(範本)
- 新增一個 google 表單,設計欄位:
- 品名
- 保存期限(日期)
- 提前提醒天數(因為日曆的提醒天數需在0~28天內,所以可以設定一個輸入驗證)
- 備註(選填):後續會出現在google日曆的活動描述
填寫表單時就能快速輸入食物資訊,不需要直接編輯試算表。
三、連動到 Google 試算表(範本)

- Google Form 會自動把回覆存到一份試算表。(你可以先自己試填一次表單,再到表單設定頁查看回覆,選擇將回覆內容連結到google sheet,就會自己產生一份紀錄回覆的 google sheet 試算表)
- 這份試算表就是「資料中心」,接下來會從這邊串到 Apps Script ,讓Script 讀取這裡的內容,來建立/更新日曆事件。
- 要自己手動再加一欄(例如「事件ID」),用來存程式和日曆事件之間的對應關係。後續Apps Script每次建立一個日曆活動後,會自己回寫這個欄位。
四、撰寫 Apps Script 程式(範本)
這步驟的程式內容,基本上就是chatGPT幫忙產出的。跟它講需求後產出的程式碼,基本上就完成大部分了,剩下有落差可以再重新下 prompt 或自己微調。記得要明確提供 sheet 上按照順序有哪些欄位,才會產出得精準。
設定方式:在試算表→擴充功能中打開 App Script 編輯器,貼上程式碼,邏輯包含:
- 新增事件:表單新增一筆資料 → 自動在日曆新增提醒
- 更新事件:修改保存期限或名稱 → 自動同步更新
- 刪除事件:從試算表刪除 → 日曆也會移除 (可以定義要刪除未來多久以內的活動)
須注意,如果要更新到指定的日曆,需要從前面步驟一新建日曆的「︙」→「設定與共用」→「整合日曆」,找到日曆ID 並修改進程式碼的指定位置。
首次執行時,要登入自己的google帳號並授權給這支Script,它才能存取你的日曆。
五、設定自動更新 Trigger
方法一(每日定時更新):在 Apps Script → 點擊「觸發器」→ 新增觸發器:
- 選擇函式:
syncExpiryEventsToCalendar
- 事件來源:時間驅動
- 頻率:每天一次(例如 08:00)
這樣每天程式會自動檢查試算表 → 同步到日曆。
方法二(即時更新):在 Apps Script → 點擊「觸發器」→ 新增觸發器:
- 選擇函式:
syncExpiryEventsToCalendar
- 事件來源:試算表
- 事件類型:當表單送出時、當試算表編輯時
兩個事件類型都要設定,因為這樣送出表單或有在試算表更新或刪除資料,才會都有觸發更新,相對比起固定時間排程更即時。
*需要注意,如果是在試算表直接刪除一整列,會無法觸發試算表編輯的更新,所以需要用清空欄位的方式;或是用時間排程觸發去定時刪除。
以上建立完成,就可以用表單快速建立保存期限提醒到google日曆了~