【前情提要】
在電子化的世界,電子表單的傳遞性也更加廣泛。那在資料蒐集到時,通常以記錄用戶的電子信箱作為聯絡方式。然而複製貼上每個用戶的電子郵件非常地無聊,在投遞相同內容的信件時也顯得沒效率。
那我們這期將利用 Google Form,從最簡單的收集信箱並寄送統一的信件為主題。
【重點整理】
- 電子郵件可以透過 plain-text 或 HTML 形式撰寫
- 刪除 Linked Sheet 會自動備份一次 Google Form
【預計內容】
- 利用 Google Form 收集信箱
- 設定信件內容
- 建立 Linked Sheet
- 將信件發送給所有人
【主要內容】
1. 利用 Google Form 收集信箱
進到 Google 表單中,在上方的選單選擇 “Settings(設定)”,在 Responses 回應的區塊,將收集 e-mail 改為 Verified 自動收集,或 Responder Input 讓用戶填寫。系統將自動生成欄位紀錄 email 信箱,省去自己設定的步驟。
如果你真的很希望能自訂義欄位的名稱,只能在問題中新增區塊讓用戶填寫,且無法自動收集。
2. 設定信件內容
各位可能覺得 e-mail 文字寫寫就好,但各位是否好奇過為何許多廠商的信件都如此繽紛絢麗?現在的信箱提供商基本都有支援 HTML,也就是最基礎的網頁設計語法,我們簡單證明下就好。
<h1>Hello!</h1><p>This is a test email with HTML content.</p>
3. 建立 Linked Sheet
在上方的選單中,我們選用在 Responses(回應)的右上角應該能看到 Google Spreadsheet 的標誌,按下後就會建立新的試算表並同步更新表單的回應。
4. 將信件發送給所有人
接下來,才是我們今日的主軸,我們進入到 Linked Sheet 中(比較好管理),我們新增以下的 Google Apps Script。
那因為我的是英文版,各位可能要自己修改下 sheetName 與 columnEmail 兩個參數。這程式碼將利用欄位名稱,逐行掃過 e-mail 並寄送信件。
// Send email to all responsers
function sendEmails() {
// Name of linked sheet
var sheetName = 'Form Responses 1';
// Name for column that store the e-mail
var columnEmail = 'Email Address';
// e-Mail Content
var emailContent = '<h1>Hello!</h1><p>This is a test email with HTML content.</p>';
// Get the active spreadsheet and sheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
// Get the data range
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
// Find the column index of the 'Email Address' column
var headers = data[0];
var emailColumnIndex = headers.indexOf(columnEmail);
// If the 'Email Address' column is found
if (emailColumnIndex !== -1) {
// Start from row 2 to skip headers
for (var i = 1; i < data.length; i++) {
var row = data[i];
var recipient = row[emailColumnIndex];
try {
// Send the email
GmailApp.sendEmail(recipient, 'Hello from BaBaoChou', emailContent, { 'htmlBody': emailContent });
console.log('Successfully sent email to: ' + recipient);
} catch (error) { console.error('Failed to send email to: ' + recipient); }
}
}
}
那接著我們填寫下表單進行測試吧,可以看到目前有兩個信箱(ps: 希望這 Minecraft 伺服器能開成 ouo)
填寫完成後,讓我們授權並手動執行寄送信件,成功寄送到兩個信箱。如果在 Inbox 沒看到信件不要緊張,由於個人帳號發信有可能被記在 spam 之中,去垃圾郵件翻一下就好。
那打開信件,能看到信件內容,確實有依照 HTML 並形成標題 ~~
那到這邊,我們就成功寄信給所有填表單的用戶了,有需求請再自行新增自訂義選單從 Google Spreadsheet 介面直接呼叫程式碼。
【後話】
但我們的應用並非只有寄送統一郵件,那在客製化信件內容之前,我將以目標客群先做介紹。那下期,我們就會鎖定資料欄位,當符合條件時,才寄信給該名顧客,不再是所有人。
【參考資料】
[1] Class GmailApp — Official Doc
https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)