首页 > 解决方案 > 按标签过滤邮件线程数组

问题描述

目标:从 gmail 中获取满足过滤条件的线程数组

线程必须具有嵌套在标签“状态”下的标签“新”线程不得具有嵌套在标签“状态”下的标签“打开”

尝试失败: var threads_new = GmailApp.search('label:Status-new -label:Status-open'); 给了我相同的结果: var threads_new = GmailApp.search('label:Status-new) 所以“状态/打开”没有被整理出来。

新方法: 我想首先将标签为“new”的所有邮件线程加载为数组“threads_new”,然后创建一个不包含标签“open”的新数组“threads_new_closed”:

var threads_new_closed = threads_new_closed.filter(function(thread) { return thread.getLabels().indexOf("Status/open")!=-1});

错误结果:结果是一个空数组threads_new_closed(数组threas_new中确实存在具有Status/new和没有Status/open的值)

任何想法?非常感谢

标签: filtergmaillabelindexof

解决方案


我找到了以下解决方法:

var threads_new_closed = [];
for (var k = threads_new.length - 1; k >=0; k--) {
var exclude = 0;
var thread_labels = threads_new[k].getLabels()
for (var l = threads_new[k].getLabels().length - 1; l >=0; l--) {
if (thread_labels[l].getName().indexOf("Status/open") != -1) {exclude++};
}
if (exclude == 0) {
threads_new_closed.push(threads_new[k])
}

推荐阅读