javascript - Google 脚本 - 将 Gmail 中的数据获取到表格中

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

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

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

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

但是,在我的 Gmail 中,我在 "Action"-label 下只有 3 封邮件,并以粗体突出显示。
其他邮件已被删除,因此它们位于垃圾箱中,但仍然具有“操作”标签。

我只想显示我有“Action”标签的邮件 - 这意味着我只想要最新的线程时间/日期、主题行作为 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])
      }
    }
  }
}

最佳答案

所以我设法通过找到数组中的最大索引来解决这个问题。
我已经对代码进行了注释,因此可以帮助其他人。谢谢大家。

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

关于javascript - Google 脚本 - 将 Gmail 中的数据获取到表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47417288/

相关文章:

javascript - jQuery 滑动表头

colors - 以编程方式在电子表格中设置边框颜色和样式

javascript - 复选框违反数据验证规则

google-apps-script - 如何使用 Google Apps 脚本在电子表格的单元格中剪辑文本?

javascript - 如何使用 React 测试库测试 React 组件是否返回 null 或其子级?

javascript - 如何在 div 加载内容时发出警报

arrays - 在 Google 表格中,如何仅显示一个变量的分组条形图?

javascript - Google 脚本用于每周在新工作表中复制和存档表单回复

javascript - Fullcalendar.js 通过点击获取当天的事件

http - 使用 `UrlFetchApp` 的 PUT 请求返回 'Bad Request' 但 Google Apps 脚本之外的相同请求有效