一般網站填寫問卷通常都會有個自動回覆信件寄到填寫人的信箱
google forms 可以透過 Apps Script 的方式來達成
這是參考一個外國教學影片,基本上就是完全複製程式碼
要注意的是Apps Script的類別、屬性跟方法寫法的大小寫,以及該有( )的不能少
部分功能也因為介面的改版而有所差異
例如:影片中利用 log來除錯的方式,現在都要在Apps Script 資訊主頁查看記錄
→如果是用新版的編輯器,會在編輯欄下方有個即時視窗
跟之前利用google試算表寄信一樣,我的個人帳號都會封鎖使用Apps Script
但是用G-Suite的帳號就不會,不知道是不是有版本的差異,還是我的個人帳號安全設定有問題
→後來發現是我個人帳號的問題,一直都無法解決,所以改用其他帳號
程式的部份分為兩個部分
1. gs的Script;2.要顯示的html信件內容
1. gs的Script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function sendmail(e) { //抓取 email要呈現的Html內容 var html = HtmlService.createTemplateFromFile("email.html"); var htmlText = html.evaluate().getContent(); //設定GmailApp.sendEmail()的參數 var emailTo = e.response.getRespondentEmail(); //表單必須設定取得電子郵件,如果用自己設計的題目來取得,就不能用這個方式 //並且是透過提交表單的觸發事件 所傳遞的 var subject ="謝謝填寫表單"; //主旨 var textBody ="請注意"; //信件內容,因為使用Html來呈現,所以這邊的內容其實會看不到 var options = {htmlBody:htmlText}; //除了Html內容之外,也可以設定附件、回覆地址等 if(emailTo !== undefined){ GmailApp.sendEmail(emailTo,subject,textBody,options) } } |
2.要顯示的html信件內容
1 2 3 4 5 6 7 8 9 |
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <P>謝謝填寫本表單</P> </body> </html> |
整理一下使用到的程式碼
HtmlService.createHtmlOutputFromFile(filename)
HtmlService-class的Methods
Creates a new HtmlOutput object from a file in the code editor.
e.response.getRespondentEmail()
e.response 是表單提交觸發事件所傳出的物件,跟表單回應的物件不一樣-Google Forms events的說明文件
A FormResponse object, representing the user's response to the form as a whole.
表單回應的物件在FormResponse可以查到getRespondentEmail()的用法
Gets the email address of the person who submitted a response, if the Form.setCollectEmail(collect) setting is enabled.
GmailApp.sendEmail(recipient, subject, body, options)
GmailApp-class的Methods
GmailApp
Provides access to Gmail threads, messages, and labels.
sendEmail(recipient, subject, body, options)
Sends an email message with optional arguments.
recipient | String | the addresses of the recipient |
subject | String | the subject line (250 characters maximum) |
body | String | the body of the email |
options | Object | a JavaScript object that specifies advanced parameters |
參考資料
Google-Apps Script FormResponse的說明
Google-Apps Script GmailApp的說明