[GAS] G-Drive 自動化 – 客戶互動 003 – 信件客製化

【前情提要】

上次我們分出客群進行投遞,那在此之上客製化的信件更能讓客戶感到自己的特殊,尤其針對折扣的推銷。或者依據其他的屬性,客製化更多的分支服務。

那我們這次,則會利用用戶名稱簡單的呈現修改信件內容的方法。

【預計內容】

  1. 新增表單問題
  2. 修改信件內容
  3. 測試信件投遞

【主要內容】

1. 新增表單問題

那在題目這邊,我新增一個區域讓用戶輸入名稱。

我這邊也順便先填寫完表單

2. 修改信件內容

接著,我們回到 Linked Sheet 中修改 Apps Script,我們先在信件內容加入 placeholder。而 {USERNAME} 就是之後要填寫用戶名稱的部分。

HTML
<h1>Hello {USERNAME}!</h1><p>This is a test email with HTML content.</p>

那接著,我們就修改其他部分,新增 replace 方法取代剛所設定的 placeholder。

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 = '是否訂閱信件';
  // Username
  var columnUsername = '姓名';
  // e-Mail Content
  var emailContent = '<h1>Hello {USERNAME}!</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);
  var usernameColumnIndex = headers.indexOf(columnUsername);

  // 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];
          var recipientName = row[usernameColumnIndex];
          // Modify e-mail content
          emailContent = emailContent.replace('{USERNAME}', recipientName);
          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. 測試信件投遞

那接著讓我們手動執行,一樣只會打印一個回應。

那到信箱可以發現信內有自己的名稱,我們成功的修改信件內容。而依照迴圈,後續會填入其他的姓名。

這樣我們就完成最基礎的客製化啦 ~~

【後話】

目前這些範例當然只有基礎與示範用途,若想要建立適合的系統勢必要分析架構與需求。那理解目前這三個簡單的原則概念,基本就能弄出些許花樣,就憑各位的想像力了。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.