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

如何通过Google Sheet脚本统计Gmail发件人及邮件大小?

解决Gmail邮件大小统计的问题

嘿,我看到你在统计发件人邮件信息时卡在了获取邮件大小这一步,咱们马上搞定它!

首先,你代码里的第一个小问题是方法名大小写错误:GmailApp的消息对象里获取大小的方法是驼峰式的getSizeEstimate(),而不是你写的getsizeEstimate()——大小写不对的话,脚本会找不到这个方法,自然拿不到大小值啦。

不过还有个逻辑上的小优化:你现在的代码会把每一封邮件都单独加入数组,同一个发件人会出现多次,最后只是排序但没有合并计数和总大小。咱们可以改用一个对象来统计,这样能直接累加同一发件人的邮件数量和总大小,更符合统计需求。

给你修正并优化后的完整脚本:

function sender_list() { 
  var inbox_threads = GmailApp.getInboxThreads(); 
  // 用对象来存储发件人对应的统计数据,避免重复条目
  var senderStats = {}; 

  // 先测试前10个线程,你之后可以改回inbox_threads.length
  for (var i = 0; i < 10; i++) { 
    var messages = inbox_threads[i].getMessages(); 
    for (var x = 0; x < messages.length; x++) { 
      var msg = messages[x]; 
      var sender = msg.getFrom(); 
      // 修正大小写:getSizeEstimate()
      var size = msg.getSizeEstimate(); 

      // 如果发件人已经在统计对象里,就累加计数和大小
      if (senderStats[sender]) {
        senderStats[sender].count += 1;
        senderStats[sender].totalSize += size;
      } else {
        // 第一次遇到这个发件人,初始化数据
        senderStats[sender] = {
          count: 1,
          totalSize: size
        };
      }
    }
  }

  // 把统计对象转换成适合写入表格的数组格式
  var sender_array = [];
  for (var sender in senderStats) {
    // 可以把字节转成KB(除以1024),或者MB(除以1024*1024),看你需求
    var sizeInKB = (senderStats[sender].totalSize / 1024).toFixed(2);
    sender_array.push([sender, senderStats[sender].count, sizeInKB + " KB"]);
  }

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = spreadsheet.getSheetByName('sheet1'); 
  sheet.clear(); 
  sheet.appendRow(['Email Address', 'Count', 'Total Size']); 
  // 按邮件数量降序排序(可选,也可以按大小排序)
  sender_array.sort(function(a, b) {
    return b[1] - a[1];
  });
  sheet.getRange(sheet.getLastRow()+1, 1, sender_array.length, 3).setValues(sender_array); 
}

关键修改点说明:

  • 修正了getSizeEstimate()的大小写问题,这是你拿不到大小值的核心原因
  • 用senderStats对象替代数组直接存储,自动合并同一发件人的数据,避免重复条目
  • 增加了字节到KB的转换(可以根据需求改成MB),让大小数据更易读
  • 加入了按邮件数量降序排序的逻辑,方便查看发件人排名

如果之后需要统计全部收件箱线程,只要把循环条件改回i < inbox_threads.length就行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:19:08