2015-04-21 4 views

ответ

1

Конечно, сначала используйте GmailApp.getUserLabels(), чтобы получить все метки, затем прокрутите их и используйте getThreads(), чтобы определить, является ли данный ярлык пустым и, наконец, используйте deleteLabel() для удаления пустых.

См:

https://developers.google.com/apps-script/reference/gmail/gmail-app

https://developers.google.com/apps-script/reference/gmail/gmail-label

+0

Я создал сценарий в электронной таблице Google для всех, чтобы создать копию. Получите скрипт [здесь] (https://docs.google.com/spreadsheets/d/1Pl89ClWMGkSaykD3QvuPdRdMeVHHUng6HF2m--7OeXU/edit?usp=sharing). – orschiro

1

GmailApp.getUserLabels(), getThreads() и deleteLabel() является путь, но будьте осторожны, чтобы не удалить пустые ярлыки, если один из его суб-ярлыки нет!

1

Основываясь на ответах выше, здесь используется скрипт Google Apps для удаления пустых меток (с проверкой вложенных меток). Javascript является грубым, но он работает! Переменная 'testing' определяет, будет ли она просто регистрировать или фактически удалять метки.

Вы можете отлаживать, запускать приложения Google Сценарии на https://script.google.com

// 
// Set to 'false' if you want to actually delete labels 
// otherwise it will log them but not delete them. 
// 
var testing = true; 

// 
// Deletes labels with no email threads 
// 
function deleteEmptyLabels() { 

    Logger.log("Starting label cleanup"); 

    var allLabels = GmailApp.getUserLabels(); 

    var emptyLabels = allLabels.filter(function(label){ return isTreeEmpty(label, allLabels); }); 

    for (var i = 0; i < emptyLabels.length; i++){ 

     Logger.log('Deleting empty label ' + emptyLabels[i].getName()); 

     if (!testing){ 
      emptyLabels[i].deleteLabel(); 
     } 
    } 

    Logger.log("Finished label cleanup"); 
} 

// 
// Finds labels below a parent 
// 
function getNestedLabels(parent, allLabels) { 
    var name = parent.getName() + '/'; 
    return allLabels.filter(function(label) { 
     return label.getName().slice(0, name.length) == name; 
    }); 
} 

// 
// Tests a single label for 'emptiness' 
// 
function isLabelEmpty(label){ 
    return label.getThreads(0, 1) == 0; 
} 

// 
// Tests a label, and nested labels for 'emptiness' 
// 
function isTreeEmpty(label, allLabels){ 

    if (!isLabelEmpty(label)) 
     return false; 

    var nested = getNestedLabels(label, allLabels); 

    for(var j = 0; j < nested.length; j++){ 
     if (!isTreeEmpty(nested[j], allLabels)) 
      return false; 
     } 

    return true; 
} 
Смежные вопросы