循环播放特定 Gmail 标签的邮件(不是线程) [英] Looping on messages (not threads) of a specific Gmail label

查看:13
本文介绍了循环播放特定 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());
  });

}

这篇关于循环播放特定 Gmail 标签的邮件(不是线程)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆