Google Script - 将数据从Gmail获取到Sheet

时间:2017-11-21 15:55:54

标签: javascript google-apps-script google-sheets gmail google-apps

我一直在这里搜索SO和谷歌,但我找不到任何有用的东西。

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

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

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

我想只显示我"Action"-label的邮件 - 这意味着我只想要最新的thread时间/日期,主题行和ID,所以我可以创建一个链接那封邮件。

Google Sheet data example

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])
      }
    }
  }
}

2 个答案:

答案 0 :(得分:2)

所以我设法通过在数组中找到最大索引来解决它 我已经对代码进行了评论,因此它可以帮助其他人。谢谢,全部。

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])
  }
}

答案 1 :(得分:0)

你最近的意思是什么?

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