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

如何修改Google脚本拉取标签下全部Gmail邮件至表格?

解决Gmail邮件批量导入Google表格的分页问题

原脚本使用GmailApp.search()方法,该方法单次最多返回500个邮件线程,且无内置分页机制,导致无法获取全部7000封邮件。要实现全量导入,需借助Gmail高级服务结合nextPageToken实现分页查询,具体修改方案如下:

步骤1:启用Gmail高级服务

  • 打开Google表格,点击菜单栏「扩展」→「Apps Script」进入脚本编辑器
  • 在脚本编辑器中,点击左侧「服务」→「添加服务」,找到「Gmail」并启用,点击「添加」完成配置

步骤2:修改后的完整脚本

function ExtractingEmails(query = "Label:Inbox") {
  const headers = ["TimeStamp", "From", "To", "Subject"];
  let allEmails = [headers];
  const pageSize = 100; // 每页获取的线程数,可在100-500之间调整
  let pageToken = null;

  do {
    // 分页获取邮件线程
    const threadsResponse = Gmail.Users.Threads.list("me", {
      q: query,
      maxResults: pageSize,
      pageToken: pageToken
    });

    // 当前页无线程数据时跳出循环
    if (!threadsResponse.threads) break;

    // 遍历线程,提取所有邮件信息
    threadsResponse.threads.forEach(thread => {
      const threadObj = GmailApp.getThreadById(thread.id);
      const messages = threadObj.getMessages();
      messages.forEach(message => {
        allEmails.push([
          message.getDate(),
          message.getFrom(),
          message.getTo(),
          message.getSubject()
        ]);
      });
    });

    // 更新分页token,准备获取下一页数据
    pageToken = threadsResponse.nextPageToken;
  } while (pageToken); // 循环直到无下一页数据

  // 将数据写入表格
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet1");
  if (allEmails.length > 1) {
    sh.clearContents();
    sh.getRange(1, 1, allEmails.length, headers.length).setValues(allEmails);
    ss.toast(`${allEmails.length - 1} 封邮件已导入,查询条件:${query}`);
  } else {
    ss.toast(`未找到符合查询条件的邮件:${query}`);
  }
}

关键逻辑说明

  • 用Gmail.Users.Threads.list()替代GmailApp.search(),支持通过pageToken和maxResults参数实现分页查询
  • 通过do-while循环持续请求下一页数据,直到nextPageToken为空(表示所有邮件线程已获取)
  • 保留原脚本的邮件信息提取逻辑,确保导入数据的一致性
  • 可调整pageSize参数平衡API调用次数和执行效率,建议值100-500

注意事项

  • 执行时间:处理7000封邮件可能接近6分钟的脚本执行上限,若出现超时,可按日期拆分查询条件(如Label:Inbox after:2023/01/01 before:2023/06/01),或使用时间驱动触发器分批执行
  • API配额:Gmail API每日调用配额为10000次,该脚本的调用量在配额范围内,无需额外申请

内容的提问来源于stack exchange,提问作者David Drake II

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:52:30