【发布时间】:2019-06-26 21:24:14
【问题描述】:
我目前有一个运行电子表格的 Google Apps 脚本,可以提取我正在查询的正确电子邮件。但是,当我实际尝试在实际电子邮件对话中提取线程回复时,我只能获取原始电子邮件正文内容。
有谁知道这是否可能或如何去做?
我当前的脚本仅从搜索查询中提取初始电子邮件,但这不是本意。
function myFunction() {
// Use sheet
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Gmail query
var query = "subject:Attendance Shed";
// 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])
}
}
我希望它能够使用给定的搜索查询检索特定线程并将其输出到电子表格。目前它只提取初始电子邮件。
【问题讨论】:
-
当您检查
if (messages[j] > max)时,您正在比较两个消息对象,它不会检查它们的顺序。如果您尝试遍历线程,您可以通过删除maxIndex循环来完成,您可以遍历该循环中的所有消息并从那里附加它们。现在你的appendRow每个线程只被调用一次。
标签: google-apps-script google-sheets gmail