最近開始思考有什麼樣的需求可以當作小小的 side project 練習,剛好最近疫情的關係比較多人請假,我就把腦筋動到了請假系統身上。在目前的請假流程中,有一個部分是填寫 google 表單,送出之後會自動新增到 google calendar 上,只要有加入這個日曆的人都可以看到。所以決定以這個為主題,爬了一下文,順便紀錄一下使用 google calendar 的過程。
使用前的準備
Google API 都是透過 token 來操作的,所以在正式使用前需要先申請好 token,並跟我們自己的 google calendar 連動。
申請 Token
- 進入 Google Cloud Platform,預設會幫你建立一個新的專案,如果要更改可以點選畫面上方的
My First Project
。不需要的話,直接點選畫面左側的選單,從API 與服務
中選擇程式庫
。
- 搜尋
Google Calendar API
並啟用,等 loading 跑完後會出現管理
的按鈕,或是從選單的API 與服務
中找到憑證
,點選畫面上方的新增憑證
,選擇服務帳戶
的選項。
- 輸入
服務帳戶詳細資料
後按下送出,接著會回到憑證頁面,找到最下面的服務帳戶
那一列,點選右側的編輯,找到畫面上方的金鑰
,點擊新增金鑰
,選擇JSON
的格式後按下建立,瀏覽器會自動下載這份檔案,請不要隨意刪除,如果遺失了只能重新產生一份金鑰。
建立 Calerdar
- 進入 Google Calendar 後選擇一個建立好的日曆,從
設定和共用
進入日曆的設定。
- 找到
與特定使用者共用日曆
的選項,點選新增邀請對象
。這裡的 email 要輸入剛才那份金鑰 JSON 檔中,client_email_form
的欄位內容,權限要記得調整成進行變更並管理共用設定
。
- 接著把網頁往下拉,找到
整合日曆
的區塊,記下這個日曆 ID
,接下來會使用到。
到目前為止,需要使用的部分都準備完成了,接下來要進入到程式的部分。
新增一個活動
新增好一個專案之後,從 Nuget 將 Google.Apis.Calendar.v3
新增到專案內,並加入下列程式碼:
|
|
執行之後回到日歷的頁面,就會看到剛剛新增上去的活動了!
Debug 紀錄
Invalid resource id value
|
|
測試的過程中有出現這個 error,看了官方文件之後發現問題是出在 Event 上,於是選擇另用比較不容易重複的 GUID 去作為參數帶上去。另外,文件上有提到只能使用小寫的英文字母和數字,要記得注意。
小結
除了範例裡提到的 Insert 之外,基本的 CRUD 都有 API 可以接,但我目前的系統還沒有這部分的功能要實作,所以沒有特別研究。
另外,官方文件所提供的註冊方法,使用的憑證類別和範例中的不太一樣,我個人認為比較麻煩,所以選擇了服務帳戶的方法。雖然大部分的功能都可以使用,但像是 Event.Attendees 這個邀請參與者的部分,就需要另外設定好權限才可以使用。
以上就是這次的內容,如果有任何使用上的疑問,或是解釋上的錯誤,都歡迎跟我說喔!我們下次見。
參考文章