【问题标题】:How to check if a Gmail label has a nested sub-label?如何检查 Gmail 标签是否有嵌套子标签?
【发布时间】:2015-05-03 09:30:48
【问题描述】:

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

【问题讨论】:

    标签: google-apps-script gmail


    【解决方案1】:

    没有直接的方法可以从“父”标签中获取标签,但是使用简单的getUserLabels() 方法documented here 并通过以下小代码进行说明非常简单:

    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(例如但不仅限于)视为一个标签,这并不是您真正想要的,但该部分将易于管理几个条件。

    【讨论】:

    • 如果在这种情况下 OP 需要跟踪子标签的子标签,则需要进行一些修改,但这在很大程度上是一个功能性解决方案。我很想使用带有标签和子标签作为属性等处理的结果对象。为了重用,但这可能是矫枉过正。
    • 嗨乔纳森,我选择字符串方法以使其尽可能简单,并且如答案中所述,没有带来“最终”解决方案,更像是如何获得它的方向简单地。但是现在你提到它我可能会尝试使用属性方法;-) thx !!
    • 这种方法的问题是您可以创建名称中包含 / 的标签,而无需涉及任何嵌套。例如创建一个标签“Foo/bar”,它将按原样显示在顶层 - 没有任何嵌套指示。我目前正在尝试找出如何区分嵌套关系和名称中的文字 /。
    • 正如我之前提到的,这不是“最终”解决方案。可以检测到您想象的情况,检查 / 分隔的子标签是否存在......好吧,我猜;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2012-03-03
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    相关资源
    最近更新 更多