如何检查Gmail标签是否有嵌套子标签?

3
使用Google Apps Script,是否有一种可以检查Gmail标签是否具有嵌套子标签的函数?如果一个标签有一个或多个子标签,我想将它们从代码序列中排除。
1个回答

5

从“父级”标签中获取标签没有直接的方法,但使用简单的getUserLabels()方法很容易获取,该方法在此处有文档说明并通过下面的小代码进行说明:

function getAllLabels(){
  var results = [];
  var labels = GmailApp.getUserLabels();
  for (var i = 0; i < labels.length; i++) {
    Logger.log("label: " + labels[i].getName());
    results.push(labels[i].getName());
  }
  for (var i = 0; i < results.length; i++) {
    if(results[i].indexOf('/')>0){Logger.log(results[i]+' has a subLabel')};
  }
}

这将显示您所有标签的列表,从第二个循环开始,您将获得至少有一个子标签的所有标签的列表。

请注意,此脚本必须进行改进,因为它将考虑INBOX(例如,但不仅限于此)作为标签,而这并不是您真正想要的,但使用一些条件很容易管理该部分。


1
如果OP需要跟踪此实例中子标签的子标签,则需要进行一些修订,但大体上这是一个功能性的解决方案。我会倾向于使用一个结果对象,其中标签和子标签被处理为属性等,以便重用,但这可能有点过度设计。 - JSDBroughton
嗨,乔纳森,我选择了字符串方法,使它尽可能简单,并且如答案中所提到的那样,没有提供“最终”解决方案,更像是一个简单获取方向的指引。但现在你提到了属性方法,我可能会尝试一下;-) 谢谢!! - Serge insas
这种方法的问题在于,您可以创建包含/名称的标签,而无需涉及任何嵌套。例如,创建一个名为“Foo/bar”的标签,它将显示在顶层,没有任何嵌套指示。我目前正在尝试找出如何区分嵌套关系和名称中的字面/之间的区别。 - Vinny Alves
正如我之前提到的,这不是一个“最终”的解决方案。你想象的情况可以检查是否存在/分隔的子标签...嗯,我猜;) - Serge insas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接