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.
Alors que les emails archivé n’en ont pas.
Voici les étapes de notre script :
- Injecter jQuery dans la page
- Aller dans la page qui contient tous les messages
- détecter le nombre de message par page, et le nombre de messages total pour extrapoler la pagination
- 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.