Solution automatisée pour supprimer certains messages Gmail datant de plus de n jours

8

J'ai besoin de supprimer certains messages Gmail datant de plus de n jours (je peux obtenir l'ensemble complet via une chaîne de recherche). Je sais que ce n'est pas possible directement dans Gmail (voir par exemple cette question ), donc je recherche une webapp qui pourrait gérer de telles activités sur mon compte (et, généralement, des tâches de ménage similaires).

Une solution automatisée qui marquerait activement les messages comme lus lorsqu'ils atteignent un âge spécifié est la solution souhaitée. Existe-t-il un moyen d'y parvenir grâce à des filtres Gmail et une syntaxe? Existe-t-il des applications, des scripts, etc. qui pourraient vous aider?

WoJ
la source
Il pourrait être possible d'écrire un script Greasemonkey qui effectuerait cette action.
Anderson Green
Je suis également intéressé à y parvenir. Demander de l'aide.
Randy6T9

Réponses:

0
  1. Il n'y a pas de fonctionnalité intégrée dans Gmail pour le faire au moment de la rédaction de cette réponse (janvier 2013).
  2. J'ai eu le même problème avec toutes ces anciennes newsletters et notifications et j'ai créé le script d'application Google pour faire exactement cela, avec l'aide des filtres intégrés. Veuillez vérifier ici: http://2sdd.blogspot.ru/2012/11/how-to-clean-up-gmail-inbox-from-emails.html

Le script est très simple, n'hésitez pas à le pirater selon vos propres besoins.

Igor Romanov
la source
Merci - également pour le script qui résout essentiellement le problème (bien que de manière indirecte, c'est quelque chose qui devrait vraiment être mis en œuvre par Google). Mise à jour de la "meilleure réponse" :)
WoJ
6

Selon Google:

  • older_than, newer_than- Similaire aux versions plus anciennes et plus récentes , mais autorise les dates relatives en utilisant d, m et y pour le jour, le mois et l'année
    Exemple: newer_than:2d
    Signification: recherche les messages envoyés au cours des deux derniers jours.

Avec cela, vous pouvez créer un filtre en les supprimant, et même uniquement les courriers dans une étiquette spécifique.

Source .

Omid Chini Foroushan
la source
1
Merci mais ce n'est pas ce que je cherchais. Je sais que je peux rechercher des e-mails répondant à certains critères. Ce que je veux faire, c'est avoir un moyen automatisé de les gérer (supprimer dans ce cas), sans actions manuelles de mon côté.
WoJ
2
Les filtres @WoJ sont ce que vous utilisez pour supprimer automatiquement les messages répondant à certains critères. Le problème est-il que, même avec les older_than:critères, les messages ne sont traités que par le filtre lors de l'entrée dans votre boîte de réception, et donc après cela, le filtre ne se déclenchera pas lorsque les messages deviendront plus anciens que la période donnée?
Nathan Craike
1
@Nathan Craike: exactement. J'ai un tas de filtres qui gèrent le courrier entrant mais, comme vous l'avez mentionné, ce n'est que pour le courrier entrant, pas celui dans l'einbox.
WoJ
Ça ne marchera pas. Selon Google, les filtres de recherche contenant "label:", "dans:", "est:", la plage de dates (par exemple "avant:" ou "après:") ou les critères d'étoiles (par exemple "a: étoile jaune") sont non recommandé car ils ne correspondront jamais au courrier entrant.
DxTx
3

Pourquoi pas une simple recherche, sélection et suppression?

Exemple, vous souhaitez supprimer tous les e-mails avant le 1er janvier 2009. Vous recherchez donc dans Gmail -

before:2009/1/1

(Vous pouvez rechercher n'importe quoi et le reste de cette réponse fonctionnerait toujours)
Cela renvoie tous les mails dans la boîte de réception avant le 1er janvier 2009 -

entrez la description de l'image ici

Maintenant, vous sélectionnez tous les e-mails de la page actuelle en cochant cette case -

entrez la description de l'image ici

Google sélectionnera tous les e-mails sur la page et vous demandera également si vous souhaitez sélectionner tous les e-mails correspondant à votre requête de recherche -

entrez la description de l'image ici

Si vous cliquez sur Select all conversations that match this search, il sélectionnera tous les e-mails avant le 1er janvier 2009, qui sont tous les e-mails que vous souhaitez supprimer.

Vous pouvez ensuite cliquer sur le Deletebouton et il vous demandera si vous êtes sûr -

Cette action affectera toutes les conversations de cette recherche. Es-tu sur de vouloir continuer?

Appuyez sur Oket vos e-mails doivent être supprimés.

Bibhas
la source
2
Attention - si les conversations sont activées, vous supprimerez également tous les messages après cette date s'ils font partie d'une conversation qui a lieu avant la date spécifiée.
mhoran_psprep
Merci mais ce n'est pas ce que je veux réaliser. Je connais les options de recherche et ce que je recherche, c'est un moyen de faire correspondre les messages "de plus de 10 jours" (par exemple). Pas "plus vieux que le 1er mai" (dans le cas d'aujourd'hui). L'usage typique serait de se débarrasser des messages qui n'ont de sens que pour un temps donné, comme les listes de télévision. Il doit s'agir d'une mesure de temps relative, et non d'une date.
WoJ
Voulez-vous créer un filtre? Sinon, il suffit d'une étape pour passer de "10 jours de plus" à "avant le 01-05-2012", ce qui ne prend pas plus d'une seconde.
Bibhas
Savez-vous comment créer un script Greasemonkey qui exécuterait cette action automatiquement?
Anderson Green
2

Si vous avez 10 000 e-mails dans Google, supprimer 8 000 d'entre eux 20 à la fois n'est pas une option amusante. Une option plus simple si vous avez une très grande quantité d'e-mails est d'obtenir un client de messagerie gratuit tel que Thunderbird et de le configurer pour supprimer les e-mails antérieurs à X jours. Si vous souhaitez conserver le courrier plus longtemps que la limite dans le client de messagerie, définissez-le pour supprimer du serveur lorsqu'il est supprimé du client. Vérifiez ensuite l'e-mail avec le client de temps en temps pour supprimer l'e-mail du serveur.

Elrond
la source
1

J'ai quelque chose comme ça piraté. Je l'ai probablement basé sur quelque chose que quelqu'un d'autre a écrit, mais c'était il y a si longtemps que je ne m'en souviens pas.

Depuis, il a bien progressé. Voici comment ça fonctionne:

Généralement, il recherche des messages avec certaines balises, puis remplace cette balise par une autre, puis les archive.

Plus précisément , les messages sont étiquetés avec des filtres de boîte de réception pour indiquer comment ils seront «expirés». Dans l'exemple ci-dessous, cela est basé sur leur âge et l'étiquette est appelée Bulk/Expires/[Daily|Weekly|Monthly]. (Remarque: il s'agit d'une balise imbriquée, mais ils n'ont pas besoin d'être imbriqués, j'aime juste les garder organisés comme ça). Chaque jour, certains scripts Google Apps s'exécutent pour vérifier si les fils de ces étiquettes correspondent à une condition, généralement une date. Il remplacera ensuite cette balise par une autre balise (appelée Bulk/Expiredci-dessous) et l'archivera. Vous pouvez également lui faire supprimer le message.

Il s'agit d'un code (avec des commentaires supplémentaires) qui nettoiera les messages datant de plus d'un jour. Il est configuré pour se déclencher tous les jours à 4 heures du matin:

function cleanUpDaily() {
  // Enter # of days before messages are archived
  var delayDays = 1 
  // make an empty Date() object
  var maxDate = new Date(); 
  // Set that date object ('maxDate')to the current data minus 'delayDays'.
  // In this case it's a date 1 day before the time when this runs.
  maxDate.setDate(maxDate.getDate()-delayDays); 
  // this is the label that finds messages eligible for this filter
  var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Daily"); 
  // this is the new label so I know a message has already been "Expired"
  var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); 
  // Get the message threads which might need to be expired.
  var threads = currLabel.getThreads(); 
  // Iterate over those threads and check if they need to be expired
  for (var i = 0; i < threads.length; i++) { 
    // You can put whatever kinds of conditions in here,
    // but this is just going to check if they were recieved before
    // 'maxDate' which here is 1 day before runtime.
    if (threads[i].getLastMessageDate()<maxDate) 
      {
        // If they're old, archive them
        threads[i].moveToArchive(); 

        // Remove the old label, they won't need to be expired again 
        // This isn't required, but it will make it slow, and Google will
        // time-out things that take too long, in my experaince it will
        // become slow and start timing out if there are more than a few
        // dozen threads to process, YMMV.
        threads[i].removeLabel(currLabel);

        // Label the thread with a new label indicating it's gone through this 
        // process. Also not strictly necessary, but it's useful if you'd like
        // to do some more processing on them in the future.
        threads[i].addLabel(newLabel); 
      }
  }
}

Voici le code pour faire cela pour les choses qui devraient expirer dans une semaine ou un mois, vous configurez des déclencheurs pour exécuter ces fonctions chaque semaine ou chaque mois.

function cleanUpWeekly() {
  var delayDays = 7 // Enter # of days before messages are moved to archive
  var maxDate = new Date();
  maxDate.setDate(maxDate.getDate()-delayDays);
  var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Weekly"); // this is the label that finds messages eligible for this filter
  var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); // this is the new label so I know a message was expired and thats why its archived
  var threads = currLabel.getThreads();
  for (var i = 0; i < threads.length; i++) {
    if (threads[i].getLastMessageDate()<maxDate)
      {
        threads[i].moveToArchive();
        threads[i].removeLabel(currLabel); // I take the label off so there's not an infinitely growing "threads" variable with time
        threads[i].addLabel(newLabel);
      }
  }
}

function cleanUpMonthly() {
  var delayDays = 30 // Enter # of days before messages are moved to archive
  var maxDate = new Date();
  maxDate.setDate(maxDate.getDate()-delayDays);
  var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Monthly"); // this is the label that finds messages eligible for this filter
  var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); // this is the new label so I know a message was expired and thats why its archived
  var threads = currLabel.getThreads();
  for (var i = 0; i < threads.length; i++) {
    if (threads[i].getLastMessageDate()<maxDate)
      {
        threads[i].moveToArchive();
        threads[i].removeLabel(currLabel); // I take the label off so there's not an infinitely growing "threads" variable with time
        threads[i].addLabel(newLabel);
      }
  }
}

En ce moment, je travaille sur celui qui prendra les Bulk/Expiredmessages et s'ils ont un Purgetag, il les supprimera définitivement. Je suis peu enclin à supprimer un e-mail (fou), mais beaucoup de choses sur les listes de diffusion archivées ont tendance à polluer les résultats de recherche. Cette contrariété a commencé à submerger mes tendances à la thésaurisation numérique. Le seul changement est que la forboucle vérifie si un message a la balise 'Purge'. Ce n'est pas anodin, car les étiquettes d'un thread donné sont renvoyées sous forme de tableau, et je dois donc vérifier ce tableau qui ajoutera quelques lignes de code. A moins que je ne trouve un moyen plus lisse.

Je l'utilise principalement pour gérer les newsletters avec Google Inbox. J'ai configuré un ensemble de messages pour la balise `Bulk / Expires / Daily 'et le filtre s'assure que seule la newsletter d'aujourd'hui est là. Ensuite, que je le lise un jour donné ou non, la dernière est là. C'est un peu comme pirater Inbox dans un lecteur RSS. Je fais la même chose pour les newsletters / mailings réguliers qui sortent hebdomadairement ou mensuellement. Généralement, je les expire lorsque leur âge supprime leur pertinence.

ccoffman
la source
1

Essayez le script plus récent et efficace sur https://github.com/omkar9999/GmailCleaner

Le script nettoiera des milliers d'anciens e-mails indésirables en quelques minutes s'il est prévu de s'exécuter toutes les minutes et ne dépassera pas le quota quotidien de Google.

omkar marathe
la source
0

Non, ce que je suggérerais de faire est quelque chose comme Al Everett mentionne la question que vous avez liée. Vous pouvez avoir différents liens pour les différentes tâches que vous souhaitez effectuer.

Ce serait bien d'avoir un moyen de supprimer automatiquement les e-mails plus anciens que quelques jours, mais pour l'instant, vous ne pouvez pas.

ComputerLocus
la source
0

Vous pouvez également utiliser ce script google. L'avantage serait que vous pouvez également donner des étiquettes imbriquées.

Script Google Apps; supprimer les e-mails Gmail

Pour exécuter, créez une copie du script, ajoutez des valeurs pour le libellé et les jours "N", exécutez Exécuter-> Initialiser puis Exécuter-> Installer.

arunskrish
la source
Une réponse similaire a également été publiée sur Lifehacker
WoJ le