【前情提要】
在上次我們成功的寄信給每位填寫表單的用戶,但很多時候用戶可能會嫌信多煩人。為了進一步提升客戶服務,發送給指定客群能更有效的讓對方感到受尊重或提升廣告效益。
那接著,我們將模擬信件訂閱的格式,篩選要收信的客戶進行投遞。
【預計內容】
- 新增表單問題
- 建立篩選機制
- 測試信件投遞
【主要內容】
1. 新增表單問題
那在題目這邊,我新增確認訂閱信件的區域。當用戶選擇 “是” 的時候,才會投遞給客戶。
我這邊也順便先填寫完表單,那自己的 e-mail 就選擇不用收到信 ~~
2. 建立篩選機制
接著,我們回到 Linked Sheet 中修改 Apps Script,下方的程式碼會針對 “題目” 進行搜尋,利用 if-else 判斷是否該寄信給用戶。可以看到我們在迴圈中多做檢查,確認 “題目” 的回答為 “是” 才寄信。
JavaScript
// 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';
// Name for column of question of subscription
var columnSubscribe = '是否訂閱信件';
// 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);
var subscribeColumnIndex = headers.indexOf(columnSubscribe);
// 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];
// If the 'Subscription' column is found
if (subscribeColumnIndex !== 1) {
if (row[subscribeColumnIndex] === '是') {
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); }
}
}
}
}
}
3. 測試信件投遞
那接著讓我們手動執行,可以看到這次只打印一個回應。
接著看到我個人的信箱,並沒有新的信件
再到執行結果所列的信箱確認,成功只寄給部分客群
【後話】
那除此之外,客製化的信件更能讓客戶感到自己的特殊,尤其針對折扣的推銷。那我們下次,則會利用用戶名稱簡單的呈現修改信件內容的方法。