Google 脚本 - 从 Gmail 获取数据到 Sheet

Google Script - get data from Gmail into Sheet

我一直在 SO 和 Google 上四处寻找,但我找不到任何有用的东西。

所以当我 运行 下面的代码时,我在图像上得到了结果。

我想从 newest/most 最近 thread 具有特定标签的邮件中提取数据。

但是,在我的 Gmail 中,我只有 "Action"-label 下用粗体突出显示的 3 封邮件。
其他邮件已被删除,因此它们在垃圾箱中,但仍然带有 "Action" 标签。

我只想显示我拥有 "Action"-label 的邮件 - 这意味着我只想要最新的 thread time/date、主题行和 ID,所以我可以为该邮件创建 link。

function myFunction() {

  var ss = SpreadsheetApp.getActiveSheet();

  var query = "label:action -label:trash -label:action-done -from:me";

  var threads = GmailApp.search(query);

    for (var i = 0; i < threads.length; i++)
    {
      var messages = threads[i].getMessages();

      for (var j = 0; j < messages.length; j++)
      {
        var mId = messages[j].getId()
        var from = messages[j].getFrom();
        var cc = messages[j].getCc();
        var time = messages[j].getDate()
        var sub = messages[j].getSubject();

        ss.appendRow([from, cc, time, sub, 'https://mail.google.com/mail/u/0/#inbox/'+mId])
      }
    }
  }
}

最近是什么意思?

在搜索中添加 newer_than:3d 怎么样? 您可以在自己的 Gmail 帐户中测试搜索,当它执行您想要的操作时,只需将其粘贴到查询中即可。

所以我设法通过找到数组中的最大索引来解决它。
我已经评论了代码,所以它可以帮助别人。谢谢大家

function myFunction() {
  // Use sheet
  var ss = SpreadsheetApp.getActiveSheet();
  // Gmail query
  var query = "label:support -label:trash -label:support-done -from:me";
  // Search in Gmail, bind to array
  var threads = GmailApp.search(query);
  // Loop through query results
  for (var i = 0; i < threads.length; i++)
  {
    // Get messages in thread, add to array
    var messages = threads[i].getMessages();

    // Used to find max index in array
    var max = messages[0];
    var maxIndex = 0;

    // Loop through array to find maxIndexD = most recent mail
    for (var j = 0; j < messages.length; j++) {
      if (messages[j] > max) {
        maxIndex = j;
        max = messages[j];
      }
    } 
    // Find data
    var mId = messages[maxIndex].getId() // ID used to create mail link
    var from = messages[maxIndex].getFrom();
    var cc = messages[maxIndex].getCc();
    var time = threads[i].getLastMessageDate()
    var sub = messages[maxIndex].getSubject();
    // Write data to sheet
    ss.appendRow([from, cc, time, sub, 'https://mail.google.com/mail/u/0/#inbox/'+mId])
  }
}