通过文件验证在 Apps 脚本中转发电子邮件

Google Apps Script

使用 Apps 脚本实现电子邮件自动化

在 Google Apps 脚本中自动转发电子邮件可以显着简化通信和数据传输流程。这在使用 Gmail 中的特定标签时特别有用,因为电子邮件需要转发到外部应用程序而无需手动干预。一个常见问题是这些转发中包含不需要的内嵌图像,例如签名和标题。

此问题不仅使转发的邮件变得混乱,而且当要求仅转发 PDF 文件等附件时也会带来挑战。在这种情况下,修改脚本以有选择地转发附件,同时维护电子邮件线程的上下文变得至关重要。下一篇文章将探讨一种解决方案,以确保仅转发必要的文件,从而提高自动化效率。

命令 描述
GmailApp.getUserLabelByName() 按名称从用户的 Gmail 帐户检索标签,允许脚本处理按特定标签分类的电子邮件。
getThreads() 返回标签内的线程对象数组,用于处理 Gmail 标签下包含的每个电子邮件对话。
getMessages() 获取单个线程中包含的所有电子邮件,从而可以详细访问每封电子邮件的内容和元数据。
getAttachments() 从电子邮件中提取所有附件,然后可以对其进行过滤以仅转发所需的文件类型。
GmailApp.sendEmail() 从用户的 Gmail 帐户发送电子邮件。它支持附件、CC、BCC 和 HTML 内容等高级选项。
filter() 用于对数组中的每个元素应用测试。在此上下文中,它会过滤附件以仅查找具有 PDF 内容类型的附件。

使用 Google Apps 脚本增强电子邮件转发

提供的 Google Apps 脚本示例旨在满足过滤和转发符合特定条件的电子邮件的特定需求,在本例中,仅转发 PDF 附件并排除签名或标题等内嵌图像。脚本的第一部分通过检索与预定义 Gmail 标签关联的所有电子邮件线程进行初始化。这是使用命令“GmailApp.getUserLabelByName()”完成的,该命令获取标签对象,允许脚本在所有关联的电子邮件线程上运行。然后,它迭代这些线程以访问各个消息。

使用“getAttachments()”方法结合检查 MIME 类型的过滤器函数来检查每条消息,以识别和过滤附件,确保仅包含 PDF 文件。然后使用“GmailApp.sendEmail()”函数转发这些过滤后的附件。此功能至关重要,因为它允许以编程方式发送电子邮件,同时附加文件并指定 HTML 正文内容和线程 ID 等高级参数,以保持电子邮件线程的连续性。这可确保转发的电子邮件仍然是正在进行的对话的一部分,满足用户保持电子邮件线程化并仅关注相关附件的要求。

优化电子邮件转发以过滤 Apps 脚本中的附件

Google Apps 脚本实施

function filterAndForwardEmails() {
  var label = GmailApp.getUserLabelByName("ToBeForwarded");
  var threads = label.getThreads();
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    var lastMessage = messages[messages.length - 1];
    var attachments = lastMessage.getAttachments();
    var filteredAttachments = attachments.filter(function(attachment) {
      return attachment.getContentType() === 'application/pdf';
    });
    if (filteredAttachments.length > 0) {
      forwardMessage(lastMessage, filteredAttachments);
    }
  }
}
function forwardMessage(message, attachments) {
  GmailApp.sendEmail(message.getTo(), message.getSubject(), "", {
    attachments: attachments,
    htmlBody: "<br> Message sent to external app <br>",
    inlineImages: {},
    threadId: message.getThread().getId()
  });
}

使用 Apps 脚本在电子邮件转发过程中排除内嵌图像

在 Google Apps 脚本中编写脚本

function setupEmailForwarding() {
  var targetLabel = "ExternalForward";
  var threadsToForward = GmailApp.getUserLabelByName(targetLabel).getThreads();
  threadsToForward.forEach(function(thread) {
    var message = thread.getMessages().pop(); // get the last message
    var pdfAttachments = message.getAttachments().filter(function(file) {
      return file.getContentType() === 'application/pdf';
    });
    if (pdfAttachments.length) {
      sendFilteredEmail(message, pdfAttachments);
    }
  });
}
function sendFilteredEmail(originalMessage, attachments) {
  GmailApp.sendEmail(originalMessage.getTo(), "FWD: " + originalMessage.getSubject(),
    "Forwarded message attached.", {
      attachments: attachments,
      htmlBody: originalMessage.getBody() + "<br> Forwarded with selected attachments only.<br>",
      threadId: originalMessage.getThread().getId()
  });
}

Apps 脚本中电子邮件处理的高级技术

在 Google Apps 脚本中处理自动电子邮件转发时,了解电子邮件管理的更广泛背景至关重要。一个重要的方面是 MIME 类型之间的区别,这有助于从内联图像中过滤特定的文件类型,例如 PDF。这种区别对于编写排除非必要附件的有效过滤器脚本至关重要。另一项高级技术涉及操纵电子邮件线程以保持通信的连贯性和链接性,这对于在业务环境中维护有组织的电子邮件轨迹至关重要。

此外,利用 Google Apps 脚本进行电子邮件自动化还可以实现超出简单转发范围的自定义行为。例如,脚本可以设计为自动回复电子邮件、生成附件摘要报告,甚至根据电子邮件的内容或附件类型将电子邮件组织到不同的标签中。这些功能使 Google Apps 脚本成为提高处理电子邮件的生产力和工作流程效率的强大工具。

  1. 如何开始使用 Google Apps 脚本实现电子邮件自动化?
  2. 您可以首先通过 Google Drive 访问 Apps 脚本环境,创建新脚本,然后使用 GmailApp 服务对电子邮件交互进行编程。
  3. 什么是 MIME 类型以及为什么它很重要?
  4. MIME 类型或媒体类型是指示文档、文件或字节分类的性质和格式的标准。确保正确处理不同文件类型对于电子邮件处理至关重要。
  5. 我可以在 Apps 脚本中按附件类型过滤电子邮件吗?
  6. 是的,您可以使用 getAttachments() 方法和过滤器来检查每个附件的 MIME 类型并进行相应的处理。
  7. 如何将转发的电子邮件保留在同一线程中?
  8. 使用 GmailApp.sendEmail() 中的 threadId 选项指定原始电子邮件线程,将转发的邮件保留在同一对话中。
  9. Apps 脚本是否可以根据类型以不同方式处理多个附件?
  10. 是的,您可以设计脚本来按 MIME 类型区分附件,并以不同的方式处理每种类型,例如仅转发 PDF 并忽略其他文件。

通过利用 Google Apps 脚本,用户可以自动执行复杂的电子邮件处理任务,特别是定制转发过程以仅包含必要的附件,例如 PDF 文件。这种有针对性的方法不仅简化了组织内部和外部的通信,而且还显着减少了电子邮件管理中涉及的手动工作。此外,保持对话线程完整的能力增强了对转发消息的上下文理解,这对于保持专业通信的连续性至关重要。