簡體   English   中英

有什么方法可以在Google Apps腳本中獲取Gmail郵件的大小?

[英]Is there any way to get Gmail message sizes in Google Apps Script?

我目前有一個使用IMAP來獲取我的Gmail帳戶中每封郵件大小的python腳本,並以各種有用的方式(例如按發件人細分)顯示該信息。 我想編寫一個執行相同操作的Google Apps腳本,但是遇到了一些麻煩。

我找不到通過腳本獲取Gmail中郵件大小的簡便方法。 我看到可以調用getRawContent() ,並且假定該字符串的長度加上消息附件的大小應該足以確定消息的大小。 但是, getRawContent()可能算作讀取,並且每天的讀取限制為20,000。 以這種速度,可能要花幾天時間才能找到我的收件箱中所有郵件的大小! (我當前的IMAP技術僅需幾分鍾。)

有什么方法可以獲取消息的大小,而無需讀取消息的全部內容並用完讀取的配額?

您可能要使用“ 高級Gmail服務

通過高級Gmail服務,您可以在Apps腳本中使用Gmail API 與Apps Script的內置Gmail服務非常相似,此API允許腳本在Gmail郵箱中查找和修改線程,郵件和標簽。 在大多數情況下,內置服務更易於使用,但是此高級服務提供了一些額外功能,並可以訪問有關Gmail內容的更多詳細信息。

我沒有嘗試過,但是文檔說:

有關此服務的詳細信息,請參閱Gmail API的參考文檔 與Apps Script中的所有高級服務一樣,高級Gmail服務使用與公共API相同的對象,方法和參數。

使用它可以獲取sizeEstimate (用於消息)和size (用於附件)。

希望能幫助到你!

使用以下代碼,您可以獲得郵件的大小以及我使用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(“ CurrentUserEmailID”,msgId).sizeEstimate;

對於附件大小 :var attachemt = GmailApp.getMessageById(msgId).getAttachments()if(attachemt){for(var j = 0; j

您可以使用上述方法。 輸出: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM