You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:开发Google Docs标签间邮箱提取与批量邮件发送脚本

提取Google Docs中的邮箱并自动发送文档

实现方案(基于Google Apps Script)

直接用Google官方的脚本工具就能完成需求,核心流程是遍历目标文件夹的Docs文档、提取标签内的邮箱、发送文档到对应地址。

完整可运行代码

function sendDocsToRecipients() {
  // 替换为你的目标文件夹ID(从文件夹URL中获取)
  const folderId = "YOUR_FOLDER_ID";
  const targetFolder = DriveApp.getFolderById(folderId);
  const docFiles = targetFolder.getFilesByType(MimeType.GOOGLE_DOCS);

  // 遍历所有Google Docs文档
  while (docFiles.hasNext()) {
    const currentFile = docFiles.next();
    const doc = DocumentApp.openById(currentFile.getId());
    const docContent = doc.getBody().getText();

    // 提取<<>>包裹的邮箱地址
    const emailRegex = /<<(\S+@\S+\.\S+)>>/;
    const emailMatch = docContent.match(emailRegex);

    if (emailMatch && emailMatch[1]) {
      const recipientEmail = emailMatch[1].trim();
      const mailSubject = `您的文档:${currentFile.getName()}`;
      const mailBody = "您好,所需文档已附在邮件中,请查收。";

      try {
        // 发送邮件,附带PDF格式的文档附件
        MailApp.sendEmail({
          to: recipientEmail,
          subject: mailSubject,
          body: mailBody,
          attachments: [currentFile.getAs(MimeType.PDF).setName(`${currentFile.getName()}.pdf`)]
        });
        console.log(`成功发送文档 ${currentFile.getName()} 至 ${recipientEmail}`);
      } catch (error) {
        console.error(`发送文档 ${currentFile.getName()} 失败:${error.message}`);
      }
    } else {
      console.warn(`文档 ${currentFile.getName()} 未找到有效邮箱地址`);
    }
  }
}

关键细节解析

1. 邮箱提取逻辑

用正则表达式 /<<(\S+@\S+\.\S+)>>/ 精准捕获标签内的邮箱:

  • << 和 >> 匹配标签的固定边界
  • (\S+@\S+\.\S+) 捕获中间的邮箱内容:
    • \S+ 匹配邮箱的用户名和域名部分(非空白字符)
    • @ 匹配邮箱的@分隔符
    • \.\S+ 匹配域名后缀(如.com、.org等)
  • emailMatch[1] 就是去掉标签后的纯邮箱地址

2. 脚本使用步骤

  • 打开Google Apps Script平台,创建新的脚本项目
  • 替换代码中的YOUR_FOLDER_ID(从文件夹URL的https://drive.google.com/drive/folders/[此处为ID]复制)
  • 运行脚本,首次运行需完成权限授权(按页面提示操作即可)
  • 可选:设置定时触发器,让脚本自动定期执行任务

3. 扩展选项

  • 若文档中有多个邮箱,改用matchAll方法遍历所有匹配结果:
    const matches = docContent.matchAll(emailRegex);
    for (const match of matches) {
      const recipient = match[1].trim();
      // 执行发送逻辑
    }
    
  • 若需发送Google Docs原生链接而非PDF附件,可添加文档共享权限并在邮件中插入链接:
    // 设置文档为收件人可查看
    currentFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
    const docLink = currentFile.getUrl();
    // 在邮件body中添加链接:`文档在线链接:${docLink}`
    

内容的提问来源于stack exchange,提问作者alecanc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:20:27