Google脚本仅从Gmail收件箱中提取500封电子邮件

时间:2019-11-20 16:55:24

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

我正在使用在网上找到的脚本来按收件箱(gmail)中的标签提取电子邮件。大约有1300封电子邮件标记为“已完成”。 它可以按预期工作,但在达到500行后始终会停止,或者它已从我的gmail提取了500个带有标签的电子邮件。我使用的是gmail商业版本,因此我不认为应该有大小限制,但是可能存在限制,而且我还没有找到任何详细信息。

我在下面发布了代码。

​​​function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('Emails')
  var item = menu.addItem('Extract Emails','myFunction')
  var item = menu.addItem('Delete Emails','clearRange')

      .addToUi();
}


function myFunction() {
  // Use sheet
  var ss = SpreadsheetApp.getActiveSheet();
  // Gmail query
  var query = "label:COMPLETED";
  // 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 = messages[maxIndex].getDate()
    var sub = messages[maxIndex].getSubject();

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

任何帮助将不胜感激。谢谢。 这是我的工作表的副本以及它的设置方式。 https://docs.google.com/spreadsheets/d/1GWgAAU---DMOaIRiOeTktbQTOgIvvK-IdG6szpPkHpA/edit?usp=sharing

0 个答案:

没有答案