使用 Gmail 和 Google 表格创建邮件合并

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

编程级别:初级
时长:10 分钟
项目类型:使用自定义菜单实现自动化

关于此解决方案

使用 Google 表格中的数据自动填充电子邮件模板。电子邮件从您的 Gmail 帐号发出,以便您可以回复收件人的回复。

邮件合并示例

运作方式

您可以使用与 Google 表格电子表格中的数据对应的占位符创建一个 Gmail 草稿模板。工作表中的每个列标题都代表一个占位符标记。该脚本会将电子表格中每个占位符的信息发送到电子邮件草稿中相应占位符标记的位置。

Apps 脚本服务

此解决方案使用以下服务:

准备工作

如需使用此示例,您需要满足以下前提条件:

  • Google 帐号(Google Workspace 帐号可能需要管理员批准)
  • 能够访问互联网的网络浏览器

试用

第 1 步:设置电子表格

  1. 点击下面的按钮可复制 Gmail/Google 表格邮件合并电子表格示例。
    制作副本
  2. 使用您要在邮件合并中使用的电子邮件地址更新收件人列。
  3. (可选)添加、修改或移除列,以自定义要在电子邮件模板中包含的数据。

如果您更改 RECIPIENTEmail Sent 列的名称,则需要更新 Apps 脚本项目中的相应代码。您可以通过点击扩展程序 > Apps 脚本从电子表格打开 Apps 脚本项目。

第 2 步:创建电子邮件模板

  1. 在您的 Gmail 帐号中,创建电子邮件草稿。如需在电子邮件中包含电子表格中的数据,请使用与用大括号括起来的列名称对应的占位符,例如 {{First name}}
    • 如果您要设置电子邮件中文本的格式,请务必还要设置占位符括号的格式。
    • 占位符区分大小写,且必须与列标题完全匹配。
  2. 复制电子邮件草稿的主题行。

第 3 步:发送电子邮件

  1. 在电子表格中,点击邮件合并> 发送电子邮件。您可能需要刷新页面才能显示此自定义菜单。
  2. 根据系统提示对脚本进行授权。 如果 OAuth 权限请求页面显示“此应用未经验证”警告,请选择高级 > 转到 {项目名称}(不安全)

  3. 再次点击邮件合并> 发送电子邮件

  4. 粘贴电子邮件模板的主题行,然后点击确定

如果您为工作表应用了过滤条件,脚本仍会向过滤出的参与者发送电子邮件,但不会添加时间戳。

打开 Apps 脚本项目

示例脚本的代码包含内嵌注释,有助于您了解代码的运作方式。如需访问代码,请在电子表格中依次点击扩展程序 > Apps 脚本

修改

您可以随意修改邮件合并自动化设置,以适应您的需求。 下面是您可以对源代码进行的一些可选更改。

添加“密送”、“抄送”、“回复”或“发件人”电子邮件参数

示例代码包含一些附加参数(目前注释掉),可让您控制发送电子邮件的帐号的名称、回复电子邮件地址以及密送和抄送电子邮件地址。

通过移除每个参数前面的正斜杠 // 来激活您要添加的参数。

以下示例摘自 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, {

影响因素

此示例由爱丁堡期货研究所的学习设计和技术主管 Martin Hawksey、博主和 Google 开发者专家创建。

此示例由 Google 在 Google 开发者专家的帮助下维护。