如何使用Google App脚本以自定义的方式检索Gmail电子邮件? [英] How to use Google App Scripts to retrieve Gmail emails in a customised way?

查看:507
本文介绍了如何使用Google App脚本以自定义的方式检索Gmail电子邮件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  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(),一世]);
}

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


$ / code>

效果很好,但有两个问题


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

  2. 这有点慢,尽管我付出了很多努力来提高效率,如何从电子邮件中检索发件人姓名,并快速将电子表格中的发件人姓名列表? >解决方案

这种方式看起来像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 +message of+ messages.length +time:+(new Date() - now));

} while(thread.length == inc);
}


Here's a neat javascript code I wrote to get all emails from my Gmail and put the list of sender name in a google spreadsheet.

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

}

It works great but there're 2 issues

  1. The GetInboxThreads method only gets the first 500 emails whatever you try. The question is does someone know how to get more than 500 ? How about get the last 500 rather than the first 500 emails ?

  2. It's a bit slow, although I put loads of effort to make it efficient, can someone suggest how to retrieve the sender name from the emails and put that list of sender names on a spreadsheet in a quick way ?

解决方案

Looks like about 10secs /100 messages this way. Can't think of anything faster in 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);
  } 

这篇关于如何使用Google App脚本以自定义的方式检索Gmail电子邮件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆