【问题标题】:How can I get the last message in the thread?如何获取线程中的最后一条消息?
【发布时间】:2019-12-26 21:01:28
【问题描述】:

我在 Google Apps 脚本中使用以下代码,并且我想获得每个邮件列表的最后回复。此代码获取每个线程的第一封邮件而不是最后一封邮件。

 var myspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var mysheet = myspreadsheet.getSheets()[0];
 var start = 0;
 var max = 399;
 var count =0;
 var row = mysheet.getLastRow()+1
 while(count < 7) 
 {

   var threads = GmailApp.getInboxThreads(start , max);
   var messages = GmailApp.getMessagesForThreads(threads); 
   var froms = [];
    messages.get
      for(var i = 0; i < threads.length; i++)
    {
       froms.push([messages[i][0].getId(),messages[i][0].getSubject(),messages[i][0].getTo(),messages[i][0].getFrom(),messages[i][0].getCc(),messages[i][0].getDate(),messages[i][0].getReplyTo()]);
    }

    mysheet.getRange(mysheet.getLastRow()+1,1,threads.length,7).setValues(froms);

    start =  start + 100;
    count++;
    }
}```

【问题讨论】:

    标签: google-apps-script gmail-api spreadsheet


    【解决方案1】:

    此脚本中有很多内容可能需要更改。

    所以以下几行仅限于获取每个线程的最后一条消息。然后将最后一条消息的详细信息推送到数组from[]。

      for (var i = 0; i < threads.length; i++) { // Loop through the threads
    
        var thisThread = threads[i]; // Get a speific thread
    
        var messages = thisThread.getMessages(); // Get the messages in that thread
    
        var messageCount = thisThread.getMessageCount(); // Count the number of messages in that thread
    
        var lastMessage = messages[messageCount - 1]; // Get the last message in that thread. The first message is numbered 0.
    
        froms.push([lastMessage.getId(), lastMessage.getSubject(), lastMessage.getTo(), lastMessage.getFrom()...]);
    
      }
    

    【讨论】:

    • 非常感谢 ADW。我试过你的方法,但应用程序脚本给出了这个错误:TypeError:无法调用未定义的方法“getId”。 (第 19 行,文件“代码”)
    • 对不起。 lastMessage 错了。已在我的帖子中进行了编辑。
    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多