使用 Gmail 合併郵件和 Google 試算表

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

程式設計層級:新手
持續時間:10 分鐘
專案類型:使用自訂選單進行自動化

認識這項解決方案

從 Google 試算表的資料自動填入電子郵件範本。電子郵件是從 Gmail 帳戶中傳送,以便您回覆收件者的回覆。

郵件合併範例

運作方式

您建立的是 Gmail 草稿範本,範本中的預留位置會對應到 Google 試算表中的資料。工作表中的每個資料欄標題都代表一個預留位置標記。這個指令碼會將試算表中每個預留位置的資訊傳送到電子郵件草稿中對應的預留位置標記位置。

Apps Script 服務

這項解決方案會使用下列服務:

事前準備

如要使用此範例,您必須符合下列條件:

  • Google 帳戶 (Google Workspace 個帳戶可能需要管理員核准)
  • 可連上網際網路的網路瀏覽器

試試看

步驟 1:設定試算表

  1. 點選下方按鈕即可建立 Gmail/試算表郵件合併範例試算表的副本。
    建立副本
  2. 將「收件者」欄更新為要在郵件合併中使用的電子郵件地址。
  3. (選用) 新增、編輯或移除資料欄,以便自訂要在電子郵件範本中加入的資料。

如果變更「收件者」或「電子郵件寄出」欄的名稱,則必須更新 Apps 指令碼專案中的對應程式碼。只要按一下「擴充功能」>「Apps Script」,即可從試算表中開啟 Apps Script 專案。

步驟 2:建立電子郵件範本

  1. 在 Gmail 帳戶中建立電子郵件草稿。如要在電子郵件中加入試算表中的資料,請使用與大括號括住的預留位置對應的預留位置,例如 {{First name}}
    • 設定電子郵件中的文字格式時,請確保預留位置格式的格式。
    • 預留位置會區分大小寫,且必須與欄標題完全相符。
  2. 複製電子郵件草稿的主旨行。

步驟 3:傳送電子郵件

  1. 在試算表中,按一下「郵件合併」>「傳送電子郵件」。您可能需要重新整理頁面,自訂選單才會顯示。
  2. 在系統提示時授權指令碼。 如果 OAuth 同意畫面顯示警告訊息「This app ist##9;t verify」(這個應用程式尚未驗證),請選取「Advanced」(進階) >,「Go to {Project Name}」(不安全的專案)

  3. 再次點選 [Mail Merge] (合併郵件)。再次點選 [Send Emails] (傳送電子郵件)

  4. 貼上電子郵件範本的主旨行,然後按一下 [確定]

如果您將工作表套用至工作表,指令碼仍會傳送電子郵件給篩選過的參與者,但不會新增時間戳記。

開啟 Apps Script 專案

指令碼範例程式碼提供了內嵌註解,協助您瞭解運作方式。如要存取程式碼,請在試算表中依序點選「Extensions」>「Apps Script」

修改

您可以視需求編輯郵件合併自動化功能,數量不限。 以下是您可以對原始碼進行的一些選用變更。

新增密件副本、副本、回覆至或電子郵件參數

程式碼範例包含許多額外參數,目前已加註註解,可讓您控制電子郵件的帳戶名稱、回覆電子郵件地址,以及密件副本和副本電子郵件地址。

透過在各個參數前方加上正斜線 // 來啟用要新增的參數。

下列範例顯示會啟用大部分電子郵件參數的 sendEmails 函式摘錄:

GmailApp.sendEmail(row[RECIPIENT_COL], msgObj.subject, msgObj.text, {
         htmlBody: msgObj.html,
         bcc: 'bcc@example.com',
         cc: 'cc@example.com',
         from: 'from.alias@example.com',
         name: 'name of the sender',
         replyTo: 'reply@example.com',
        // noReply: true, // if the email should be sent from a generic no-reply email address (not available to gmail.com users)

在上述範例中,由於已設定 replyTo 參數,因此仍會為 noReply 參數加上註解。

在電子郵件中加入萬國碼 (Unicode) 字元

如要在電子郵件中加入萬國碼 (Unicode) 字元 (例如表情符號),您必須更新程式碼以使用郵件服務,而非 Gmail 服務。

在程式碼範例中,更新下列程式碼:

GmailApp.sendEmail(row[RECIPIENT_COL], msgObj.subject, msgObj.text, {

將下列程式碼替換為以下程式碼:

MailApp.sendEmail(row[RECIPIENT_COL], msgObj.subject, msgObj.text, {

貢獻者

這個範例是由 Edinburgh Futures Institute、網誌作者和 Google Developers 專家團隊的學習設計與技術主管 Martin Hawksey 製作。

這個範例是由 Google 開發人員協助維護。