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

能否使用Gmail Apps Script实时分析撰写中邮件并实现自动触发功能?

针对Gmail草稿实时操作与自动触发扩展的解决方案

一、实现草稿邮件近似"onChange"的实时分析效果

Gmail Apps Script 没有原生的草稿内容实时变更触发器,但可以通过定时轮询草稿箱的方式实现近似效果:

  1. 核心思路

    • 创建定时触发器,周期性检查草稿箱内的邮件
    • 对比草稿的上次修改时间或内容哈希值,判断是否有更新
    • 检测到更新时执行自定义分析/操作函数
  2. 示例代码

    // 初始化:创建1分钟间隔的定时触发器(仅需执行一次)
    function createDraftMonitorTrigger() {
      ScriptApp.newTrigger('checkDraftChanges')
        .timeBased()
        .everyMinutes(1) // 最小间隔为1分钟,受限于Apps Script触发器限制
        .create();
    }
    
    // 检查草稿变更的核心函数
    function checkDraftChanges() {
      const drafts = GmailApp.getDrafts();
      const properties = PropertiesService.getUserProperties();
    
      drafts.forEach(draft => {
        const draftId = draft.getId();
        const lastUpdated = draft.getMessage().getLastUpdated();
        const storedTime = properties.getProperty(`draft_${draftId}_lastUpdated`);
    
        // 首次检测或草稿已更新
        if (!storedTime || new Date(lastUpdated) > new Date(storedTime)) {
          // 执行你的自定义分析/操作逻辑
          analyzeDraftContent(draft.getMessage());
          // 更新存储的最后修改时间
          properties.setProperty(`draft_${draftId}_lastUpdated`, lastUpdated);
        }
      });
    }
    
    // 自定义草稿内容分析函数
    function analyzeDraftContent(message) {
      const subject = message.getSubject();
      const body = message.getPlainBody();
      // 这里添加你的实时分析逻辑,比如关键词检测、格式校验等
      console.log(`分析草稿:主题=${subject},内容长度=${body.length}`);
    }
    
  3. 注意事项

    • 定时触发器最小间隔为1分钟,无法做到毫秒级实时,适合非强实时需求
    • 避免过于频繁的轮询,防止触发Apps Script的配额限制
    • 可以通过存储内容哈希值替代修改时间,更精准检测内容变更(需处理长文本哈希性能问题)

二、新邮件撰写时自动触发扩展打开

纯Apps Script无法实现自动打开扩展(Gmail侧边栏/编辑器插件),需结合Chrome扩展监听Gmail页面事件来实现:

  1. 核心思路

    • 开发Chrome扩展,监听Gmail撰写页面的加载事件
    • 当检测到用户打开新撰写窗口时,调用Apps Script的API触发扩展侧边栏显示
    • 提前完成Apps Script扩展的授权,确保无需用户手动点击
  2. 关键步骤

    • Chrome扩展部分:在content.js中监听页面DOM变化,识别撰写页面加载
      // Chrome扩展content.js
      const observer = new MutationObserver((mutations) => {
        // 检测Gmail撰写窗口的特征元素(可根据实际DOM结构调整)
        const composeWindow = document.querySelector('.aeJ');
        if (composeWindow && !window.extensionTriggered) {
          window.extensionTriggered = true;
          // 调用Apps Script的侧边栏打开函数(需提前配置消息通信)
          chrome.runtime.sendMessage({action: 'openGmailAddon'});
        }
      });
      
      observer.observe(document.body, {childList: true, subtree: true});
      
    • Apps Script部分:配置可被外部调用的函数,用于打开侧边栏
      // Apps Script代码
      function openComposeSidebar() {
        const html = HtmlService.createHtmlOutputFromFile('sidebar')
          .setWidth(300)
          .setHeight(400);
        GmailApp.setSidebarHtml(html);
      }
      
      // 配置可被Chrome扩展调用的端点(需部署为Web App)
      function doGet(e) {
        openComposeSidebar();
        return ContentService.createTextOutput('Sidebar opened');
      }
      
    • 部署与授权:将Apps Script部署为Web App,允许匿名或特定用户访问;Chrome扩展中通过Web App URL触发打开操作
  3. 注意事项

    • 需遵守Chrome扩展的权限规则,申请https://mail.google.com/*的访问权限
    • Gmail的DOM结构可能会更新,需定期调整元素选择器
    • 首次使用仍需用户完成Apps Script的授权流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:37:06