循环播放特定 Gmail 标签的邮件(不是线程)

我通过以下步骤将特定的消息(而不是整个线程)添加到标签to_process:

I added specific messages (and not the whole thread) to a label to_process with these steps:

  1. 在 Gmail 设置中关闭 对话模式

将标签 to_process 应用于特定消息

Apply the label to_process to specific messages

显示消息时,我可以确认只添加了特定的消息.例如,同一线程中的另一条消息没有此标签.这很好.

When displaying the messages, I can confirm that only the specific messages have been added. For example, another message which is in the same thread doesn't have this label. This is good.

现在我想循环播放来自 Google Apps 脚本的所有这些消息.但问题是 API 只能授予对附加到某个标签的 threads 的访问权限:

Now I'd like to loop on all these messages from Google Apps Script. But the problem is that the API can only give access to threads attached to a certain label:

var threads = GmailApp.search('label:to_process'); 
for (var i = 0; i < threads.length; i++) {
    // problem: here I cannot access to messages but only threads
}

var label = GmailApp.getUserLabelByName("to_process");
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
    // problem: here I cannot access to messages but only threads       
}

如何循环播放与标签关联的消息(而不是线程)?

开始解决方案,但我不知道如何继续:

Beginning of a solution but I don't know how to continue:

var threads = GmailApp.search('label:to_process'); 
for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
        var message = messages[j];

        // pseudo code here because getMessageLabels doesn't exist
        //if ("to_process" is in message.getMessageLabels()) {
        //}

    }
}

推荐答案

我会选择高级 Gmail 服务 和 Gmail API list(),然后 getMessageById() :

I'd go with Advanced Gmail Service and the Gmail API list(), then getMessageById() :

function listMessages () {
  // Only return messages matching the specified query.
  var msgs = Gmail.Users.Messages.list('me', {'q':'label:to_process larger:5M'}).messages;

  // For each message - retrieve it by its id
  msgs.forEach(function (e){
    Logger.log("This email's subject is: %s", GmailApp.getMessageById(e.id).getSubject());
  });

}

相关文章