提交Google表單後自動發出確認email
GAS = Google Apps Script
本篇是為了做一個線上報名系統,當使用者在 Google 表單線上報名後,觸發 Google Script 到表單中找出填入的資料(包含 email address),再利用 Gmail 發出報名確認信。
Step 1: 表單完成後,在表單選項中打開「指令碼編輯器」
打開指令碼編輯器
Step 2: 取個名字 "registration" 並開始寫 code,第一個 function getFormDate(e),參數 e 很重要,從裡面可以抓出表單中填入的資料。
指令碼編輯器的畫面
Step 3: 利用 GmailApp.sendEmail 這個 API 發信,會使用登入帳號的 gmail 發信。
reference: https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String)
GmailApp.sendEmail API 使用方式
Step 4: 接著要為使用 GmailApp API 設定 Auth 權限,要打開「資訊清單檔案」。
reference: https://developers.google.com/apps-script/concepts/scopes#setting_explicit_scopes
英文選單是 manifest file ,打開後檔名又叫 appsscript.json ,中英文完全對不上,讓人好困惑呀!
查看選單中選「顯示資訊清單檔案」
開啟顯示後如下:
自動帶入的設定
貼上這一段程式:
"oauthScopes": [
"https://www.googleapis.com/auth/gmail.send",
"https://www.googleapis.com/auth/gmail.compose",
"https://www.googleapis.com/auth/gmail.modify",
"https://mail.google.com/",
"https://www.googleapis.com/auth/gmail.addons.current.action.compose"
]
貼上以後像這樣:
貼在最後面,記得要存檔
第13行是為了發LineNotify的!
TimeZone 我不知道怎麼改成台北~
Step 5: 按下小時鐘設定啟動程序
什麼時候要啟動由此設定
跳出新頁面,按下右下角「新增觸發條件」後填入以下資料
主要就是左邊幾個設定選一選
按下儲存,會要求選擇執行帳戶與授權,完成後畫面跳回這樣就算啟動了~
新增了一個啟動條件
Step 6 測試:提交表單後,可以到這邊去看執行結果,雖然有收到 email,但不知道這次測試狀態為何是「不明」,按下最右邊箭頭可以看 Log 是完整的。註:重新載入網頁後就顯示「已完成」,虛驚一場。
這個畫面叫 Apps Script Dashborad (資訊主頁)
這裡的 Log 是因為 script 中用到 Logger.log,例如:
Logger.log('sendConfirmEmail ' + mailAddrs + session + name + earlybird + companion);
後記:Script 的時區修改,但 appscript.json 中還是不知怎麼改,所以下次記得先來這邊改。
檔案選單選「專案屬性」
最下面時區可改成台北
順便一提,專案屬性中的「範圍」就是前面設定的 Auth 權限內容,可以比對一下。如果改了 appsscript.json 中的權限內容,就要重新到「我的觸發條件」中再「編輯」、「儲存」一次,也就是重新啟動的意思。這點也是傑夫老師在這邊撞牆了很久的點。
就這樣子~看來很簡單,但其中很多眉眉角角花了許久才打通,記錄下來希望對其他人有幫助。Bye now~