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

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

}

效果很好,但有两个问题

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

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

最佳答案

这样看来大约需要 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);
  } 

关于javascript - 如何使用 Google App Scripts 以自定义方式检索 Gmail 电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13832057/

相关文章:

google-apps-script - 无法检索下一个对象 : iterator has reached the end error when iterating over shared Drive

google-apps-script - 菜单项未出现在 Google 表格插件中

javascript - 动态绘制吉他和弦

javascript - 可以在 html 5 中连续播放两次声音吗?

javascript - 将值插入多选

google-apps-script - 如何在文件夹中创建文件?

google-apps-script - 用于添加和编辑/更新 Gmail 联系人的 Google 电子表格

javascript - php javascript - 添加删除动态表单(带有日期选择器输入)

javascript - Vuetify 组合框不返回 id 而不是值

javascript - 设置 Array[i].length = 13;也改变其他数组长度。为什么?