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

如何使用Google Apps Script获取特定主题Gmail邮件截图并导入Google Sheets?

获取特定主题Gmail邮件截图并导入Google Sheets

核心实现思路

  1. 搜索指定主题的Gmail邮件线程
  2. 提取每封邮件的网页永久链接
  3. 通过PageSpeed Insights API生成邮件网页的截图
  4. 将截图插入到目标Google Sheets中

前置准备

  • 登录Google Cloud Console,启用PageSpeed Insights API(需关联你的Google账号项目)
  • 确保脚本已授权访问Gmail、UrlFetch、Drive、Google Sheets的权限

完整整合代码

function importGmailScreenshotsToSheets() {
  // 配置参数
  const subjectQuery = 'subject:"Daily Report"'; // 目标邮件主题
  const sheetId = "YOUR_SHEET_ID"; // 替换为你的Google Sheets ID
  const sheetName = "Sheet1"; // 替换为目标工作表名称

  // 获取目标邮件线程及消息
  const threads = GmailApp.search(subjectQuery);
  if (threads.length === 0) {
    console.log("未找到匹配主题的邮件");
    return;
  }
  const msgs = GmailApp.getMessagesForThreads(threads).flat(); // 扁平化消息数组

  // 初始化目标工作表
  const sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  sheet.clear(); // 清空旧数据(可选)
  sheet.getRange(1, 1).setValue("邮件主题");
  sheet.getRange(1, 2).setValue("邮件截图");

  // 遍历邮件生成截图并插入表格
  msgs.forEach((msg, index) => {
    try {
      // 获取邮件网页永久链接
      const emailUrl = msg.getPermalink();
      const emailSubject = msg.getSubject();

      // 调用PageSpeed API获取截图
      const apiUrl = `https://www.googleapis.com/pagespeedonline/v4/runPagespeed?screenshot=true&fields=screenshot&url=${encodeURIComponent(emailUrl)}`;
      const response = UrlFetchApp.fetch(apiUrl);
      const data = JSON.parse(response.getContentText());

      // 转换为图片Blob
      const screenshotBlob = Utilities.newBlob(
        Utilities.base64DecodeWebSafe(data.screenshot.data),
        "image/png",
        `${emailSubject}_${index}.png`
      );

      // 插入到Sheets并调整尺寸
      const row = index + 2;
      sheet.getRange(row, 1).setValue(emailSubject);
      sheet.insertImage(screenshotBlob, 2, row).setWidth(300).setHeight(400);

      console.log(`已处理邮件:${emailSubject}`);
    } catch (err) {
      console.error(`处理邮件失败:${err.message}`);
    }
  });
}

关键代码说明

  • msg.getPermalink():获取单封邮件的网页版永久链接,这是生成截图的核心依据
  • PageSpeed API调用:仅请求screenshot字段以减少数据传输,encodeURIComponent处理URL特殊字符
  • insertImage():将图片Blob直接插入到指定单元格,可通过setWidth/setHeight调整显示尺寸

注意事项

  • PageSpeed API有免费调用额度限制(每月1000次),大量邮件处理需留意配额
  • 部分邮件可能因权限或格式问题无法生成截图,代码中已加入异常捕获
  • 首次运行脚本时,需按照提示完成权限授权流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:15:55