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

问题描述 投票:0回答:2

使用Google Apps脚本,是否有一个功能可以检查Gmail标签是否有嵌套子标签?如果标签有一个或多个子标签,我想将它们从代码序列中排除。

google-apps-script gmail
2个回答
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 (例如但不仅限于)视为标签,这并不是您真正想要的,但该部分在几个条件下将很容易管理。


0
投票

谢谢!我添加了一些东西,以便显示所有子标签

 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')};
  }
}
// Proceed Sub Labels ⬇️

function processSubLabels(label, prefix) {
  var subLabels = label.getLabels();
  for (var i = 0; i < subLabels.length; i++) {
    var subLabelName = prefix + "/" + subLabels[i].getName();
    Logger.log("subLabel: " + subLabelName);
    processSubLabels(subLabels[i], subLabelName);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.