Gg / Google Forms自動寄出確認信

一般網站填寫問卷通常都會有個自動回覆信件寄到填寫人的信箱

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的說明