首页 > 解决方案 > Google 脚本仅从 Gmail 收件箱中提取 500 封电子邮件

问题描述

我正在使用我在网上找到的脚本按收件箱 (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

标签: google-apps-scriptgoogle-sheetsgmail

解决方案


推荐阅读