Google AppScript
因為我懶的一堂一堂課加入日曆、還要按重複,所以就來研究如何自動化。我的想法是透過一個物件定義課表,然後透過程式來自動化新增。評估了幾個技術後,決定使用 Google App Script 來實做,畢竟他和日曆都是 Google 產品,整合應該是最好的(吧,而且可以弄成類似雲端應用的感覺,輕鬆開放給其他人使用。
建立專案
在 https://script.google.com/home 建立新專案後,會自動建立 程式碼.gs
,雖然他寫 .gs
,但可以直接當作 javascript 看,看設定頁面,背後應該也是 V8 在執行。
連結 Google Calendar
我們的程式要連結日曆,需要權限和 API,點擊左側「服務」右邊的「+」,找到 Google Calendar API
,按新增
新增一個活動
先透過一些範例來看看怎麼和 Google Calendar 互動
單次的活動
|
|
寫好函數後,把上方的測試函數改成 myFunction
,然後按「執行」,就會單次執行這個函數了
重覆的活動
接下來,來試試重複的活動,基本上只是新增一個 RecurrenceRule
物件
|
|
https://developers.google.com/apps-script/reference/calendar/calendar#createeventseriestitle,-starttime,-endtime,-recurrence
https://developers.google.com/apps-script/reference/calendar/event-recurrence
http
現在我們能和日曆溝通了,理論上在加上一個好用的 API 界面就可以結束了,但是我還想加上一個 web 界面,這樣就可以不用每次都來編輯程式碼。
- 新增
doGet(e)
函數
|
|
- 部署成網頁應用程式
- 點右上角藍色的「部署」>「新增部署作業」
- 點選左上角的齒輪>網頁應用程式
- 設定
- 按下「部署」
- 獲得正式連結
- 測試部署作業
- 點右上角藍色的「部署」>「測試部署作業」
- 獲得測試連結
Notice
建立測試部署作業之前需要先正式部署
正式部署用得程式是建立當下的版本,測試部署是會一直用最新版本
我們可以在 doGet(e)
函數中用 e.parameter
取得 querystring 得內容
然後就可以用這些東西湊一湊弄出一個好用的課表 WebApp 了
驗證應用程式
現在登入我們的網頁都會跳說這個應用程式不安全,需要提交程式給 Google 驗證後才能移除,不然就會一直出現這個醜醜的畫面,但是我還沒研究出來怎麼弄,也懶得弄。https://medium.com/@joshchang_51558/%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E6%9C%89%E6%95%88%E7%9A%84%E9%80%9A%E9%81%8E-google-oauth-scope-verification-35019d93ce95 這個看起來應該可以參考
我的程式碼
main.gs
|
|
index.html
|
|