Gmail : Libérer de l’espace en supprimant toutes les archives automatiquement.

Disclaimer


Nous ne pouvons être tenus responsables des dommages pouvant résulter des téléchargements, de l’installation, du stockage ou de l’usage de logiciels, scripts, ou du contenu de notre site web.

Il faut le savoir, par défaut, Gmail ne supprime jamais les messages de votre boite. Il les archives.
Du coup, il n’est pas rare d’atteindre la limite de l’espace disponible, alors même que vous venez de supprimer tous vos message.


Gmail les places, non pas dans une section « Archives », mais dans « Tous les messages ». De sorte que vous vous retrouvez avec un dossier contenant tous les bon messages, et tous les messages supprimés.
Et démerde-toi avec ça !

Quand on a que quelques pages, à la limite ça se gère. Mais si on arrive à la limite des 15GO par défaut, c’est que l’on a des centaines de milliers de messages à trier.

Pour remédier à cela, on va devoir automatiser la suppression de nos message archivés. Et nous allons utiliser jQuery.

Premièrement, il nous faut comprendre comment détecter un message archivé d’un message encore dans notre boite de réception. C’est tout simple, Gmail met le dossier dans lequel il est classé, juste avant le sujet. Donc si un message n’as pas de dossier, alors c’est un message archivé, donc à supprimer.

"> image


Alors que les emails archivé n’en ont pas.

"> image-1

Voici les étapes de notre script :

  1. Injecter jQuery dans la page
  2. Aller dans la page qui contient tous les messages
  3. détecter le nombre de message par page, et le nombre de messages total pour extrapoler la pagination
  4. boucler sur toutes les pages, pour sélectionner les message archivés et les supprimer.

Pour injecter javascript, on ouvre la console et on exécute ceci :

var jquery_injection = document.createElement('script');
jquery_injection.setAttribute('src','https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js');
document.head.appendChild(jquery_injection);

On attends quelques secondes que la page ait bien terminée de charger la librairie et on lance la suite.

console.log('Display all message (including archive)');
window.location.href=GM_SESSION_PATH+'#all';

setTimeout(() => { 
    var msg_total=$('div.G-atb .Dj span.ts').eq(2).html(); 
    var msg_per_page= $('div.G-atb .Dj span.ts').eq(1).html();
    var nb_page=parseInt(msg_total.replace(/\s/g, ''))/parseInt(msg_per_page.replace(/\s/g, ''));
    nb_page=Math.ceil(nb_page);
    console.log('Found '+nb_page+' pages');
    console.log('Start cycling through pages');
    setTimeout(() => { 
        Gmail_go_to_page(nb_page);
    }, 1000);
 
}, 1000);
 
function Gmail_go_to_page(page)
{
    console.log('deleting page : '+page);
 
    if(page >= 0 ){
        window.location.href=GM_SESSION_PATH+'#all/p'+page;
        setTimeout(() => { 
            Gmail_delete_archive(page);}, 5000);
    }
     
}
 
function Gmail_delete_archive(page)
{
    console.log('deleting messages');
    document.head.appendChild(jquery_injection);
    $('.UI table[role=grid]:visible').eq(0).find('tr').each(function(i,e){
        if($(e).find('.at').length==0){
            $(e).find('ul[role=toolbar] li').eq(1).trigger('click');
		console.log('.');
        }
 
    });
    if(page-1 >= 0 ){
        setTimeout(() => { Gmail_go_to_page(page-1);}, 10000);
    }else{
        console.log('Cycling ended !!');
    }
 
}

Une fois la boucle terminée, le message « Cycling ended » s’affiche.

"> image-2