如何使用Google App Scripts以自定义方式检索Gmail电子邮件?

Dv_*_*_MH 3 javascript google-apps-script

这是我写的一个简洁的JavaScript代码,用于从我的Gmail获取所有电子邮件,并将发件人姓名列表放在谷歌电子表格中.

function doGet()
{
  var myspreadsheet = SpreadsheetApp.openById("0Atg1TJnn4dFdGbjNGSrMGJRdGc");
  var mysheet = myspreadsheet.getSheets()[0];
  var threads = GmailApp.getInboxThreads();
  var messages = GmailApp.getMessagesForThreads(threads); 
  var froms = [];

  for(var i = 0; i < threads.length; i++)
  {
    froms.push([messages[i][0].getFrom(),i]);
  }

  mysheet.getRange(1,1,threads.length,2).setValues(froms);

}
Run Code Online (Sandbox Code Playgroud)

它运作良好,但有2个问题

  1. 无论您尝试什么,GetInboxThreads方法只能收到前500封电子邮件.问题是有人知道如何获得超过500?如何获得最后500个而不是前500个电子邮件?

  2. 这有点慢,虽然我付出了很多努力来提高效率,但是有人可以建议如何从电子邮件中检索发件人姓名并将这些发件人姓名列表快速放入电子表格中吗?

Dav*_*idF 10

看起来像这样的10secs/100消息.在GAS中想不出更快的事情.

function getMail(){
    var inc = 100;
    var start = 0;
    do  {
        var now = new Date();
      var thread = GmailApp.getInboxThreads(start, inc);

      start += inc;
      var messages = GmailApp.getMessagesForThreads(thread);
      Logger.log("# threads"+thread.length+"# of messages" + messages.length+" time :"+(new Date()-now));

      }  while (thread.length == inc);
  } 
Run Code Online (Sandbox Code Playgroud)