3

これは、Gmail からすべての電子メールを取得し、送信者名のリストを Google スプレッドシートに入れるために作成した適切な JavaScript コードです。

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);

}

それはうまく機能しますが、2つの問題があります

  1. GetInboxThreadsメソッドは、何を試しても最初の 500 通の電子メールのみを取得します問題は、誰かが 500 以上を取得する方法を知っているかということです。最初の 500 通のメールではなく、最後の 500 通を取得するのはどうですか?

  2. 少し遅いですが、効率的にするために多大な努力を払っていますが、誰かが電子メールから送信者名を取得し、その送信者名のリストをスプレッドシートにすばやく配置する方法を提案できますか?

4

1 に答える 1

10

このように約10秒/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);
  } 
于 2012-12-14T22:17:37.510 に答える