提交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 使用方式

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 (資訊主頁)

這個畫面叫 Apps Script Dashborad (資訊主頁)

這裡的 Log 是因為 script 中用到 Logger.log,例如:

Logger.log('sendConfirmEmail ' + mailAddrs + session + name + earlybird + companion);

後記:Script 的時區修改,但 appscript.json 中還是不知怎麼改,所以下次記得先來這邊改。

檔案選單選「專案屬性」

檔案選單選「專案屬性」

最下面時區可改成台北

最下面時區可改成台北

順便一提,專案屬性中的「範圍」就是前面設定的 Auth 權限內容,可以比對一下。如果改了 appsscript.json 中的權限內容,就要重新到「我的觸發條件」中再「編輯」、「儲存」一次,也就是重新啟動的意思。這點也是傑夫老師在這邊撞牆了很久的點。

就這樣子~看來很簡單,但其中很多眉眉角角花了許久才打通,記錄下來希望對其他人有幫助。Bye now~