有没有办法在Google Apps脚本中获取Gmail邮件大小?

时间:2016-09-26 19:43:20

标签: google-apps-script

我目前有一个python脚本,它使用IMAP来获取Gmail帐户中每封邮件的大小,并以各种有用的方式显示该信息,例如按发件人细分。我想写一个同样做的Google Apps脚本,但我遇到了一些麻烦。

我找不到任何简单的方法来从脚本中获取Gmail中的邮件大小。我看到我可以调用getRawContent(),并且我认为该字符串的长度加上消息附件的大小应该足以确定消息大小。但是,getRawContent()可能会被视为读数,并且每天的配额限制为20,000次。按照这个速度,我需要几天时间才能找到收件箱中所有邮件的大小! (我目前的IMAP技术只需几分钟。)

有没有办法在不读取邮件的完整内容和用尽读取配额的情况下获取邮件大小?

2 个答案:

答案 0 :(得分:2)

您可能想要使用“ Advanced Gmail Service

  

高级Gmail服务允许您在Apps脚本中使用Gmail API。与Apps Script的built-in Gmail service非常相似,此API允许脚本查找和修改Gmail邮箱中的线程,消息和标签。在大多数情况下,内置服务更易于使用,但此高级服务提供了一些额外功能,并可访问有关Gmail内容的更详细信息。

我没试过,但文件说:

  

有关此服务的详细信息,请参阅Gmail {的reference documentation。与Apps Script中的所有高级服务一样,高级Gmail服务使用与公共API相同的对象,方法和参数。

使用此功能可以获取sizeEstimate(针对消息)和size(针对附件)。

希望它有所帮助!

答案 1 :(得分:1)

使用以下代码,您可以获得邮件大小以及附件大小 我使用了Gmail高级服务和GmailApps

    function getMsgSize() {
  var msgSizeCount = 0,
    attaSize = 0;
  var threads = GmailApp.search('in all has:attachment -in:chats AND After:2016/09/20 ')
  for (var i = 0; i < threads.length; i++) {
    var msgId = threads[i].getId();
    var msgSize = Gmail.Users.Messages.get("CurrentUserEmailID", msgId).sizeEstimate;
    msgSizeCount = msgSizeCount + msgSize
    var attachemt = GmailApp.getMessageById(msgId).getAttachments()
    if (attachemt) {
      for (var j = 0; j < attachemt.length; j++) {
        attaSize = attaSize + attachemt[j].getSize()
      }
    }
  }
  Logger.log(['Message Size: ' + msgSize / 1024 + 'MB', 'Attachment Size: ' + attaSize / 1024 + 'MB'])
}

使用此代码可以自定义输入消息 或者你可以使用

1) Gmail邮件大小:var msgSize = Gmail.Users.Messages.get(&#34; CurrentUserEmailID&#34;,msgId).sizeEstimate;

对于附件大小:var attachemt = GmailApp.getMessageById(msgId).getAttachments()     如果(attachemt){      for(var j = 0; j

您可以使用上述方法。 输出:enter image description here