Automatisierte Lösung zum Löschen bestimmter Google Mail-Nachrichten, die älter als n Tage sind

8

Ich muss bestimmte Google Mail-Nachrichten löschen, die älter als n Tage sind (ich kann den gesamten Satz über eine Suchzeichenfolge abrufen). Ich weiß, dass dies nicht direkt in Google Mail möglich ist (siehe zum Beispiel diese Frage ), daher suche ich nach einer Webanwendung, die solche Aktivitäten in meinem Konto (und im Allgemeinen ähnliche Haushaltsaufgaben) ausführen kann.

Eine automatisierte Lösung, die Nachrichten aktiv als gelesen markiert, wenn sie ein bestimmtes Alter erreichen, ist die gewünschte Lösung. Gibt es eine Möglichkeit, dies durch Google Mail-Filter und eine Syntax zu erreichen? Gibt es Apps, Skripte usw., die helfen würden?

WoJ
quelle
Möglicherweise kann ein Greasemonkey-Skript geschrieben werden, das diese Aktion ausführt.
Anderson Green
Ich bin auch daran interessiert, dies zu erreichen. Stellenangebote.
Randy6T9

Antworten:

0
  1. Zum Zeitpunkt des Schreibens dieser Antwort (Januar 2013) gibt es in Google Mail keine integrierte Funktion, um dies zu tun.
  2. Ich hatte das gleiche Problem mit all diesen alten Newslettern und Benachrichtigungen und habe ein Google App-Skript erstellt, um genau dies zu tun, mit Hilfe von integrierten Filtern. Bitte überprüfen Sie hier: http://2sdd.blogspot.ru/2012/11/how-to-clean-up-gmail-inbox-from-emails.html

Das Skript ist sehr einfach. Sie können es jederzeit nach Ihren eigenen Wünschen hacken.

Igor Romanov
quelle
Vielen Dank - auch für das Skript, das das Problem im Grunde löst (obwohl dies auf indirekte Weise etwas ist, das wirklich von Google implementiert werden sollte). Aktualisierung "beste Antwort" :)
WoJ
6

Laut Google:

  • older_than, newer_than- Ähnlich wie bei älteren und neueren , erlaubt jedoch relative Daten mit d, m und y für Tag, Monat und Jahr.
    Beispiel: newer_than:2d
    Bedeutung: Findet Nachrichten, die innerhalb der letzten zwei Tage gesendet wurden.

Mit diesem können Sie einen Filter erstellen, der diese und sogar nur die Mails in einem bestimmten Label löscht.

Quelle .

Omid Chini Foroushan
quelle
1
Danke, aber das habe ich nicht gesucht. Ich weiß, dass ich nach E-Mails suchen kann, die bestimmte Kriterien erfüllen. Was ich tun möchte, ist eine automatisierte Möglichkeit, mit ihnen umzugehen (in diesem Fall löschen), ohne manuelle Aktionen von meiner Seite.
WoJ
2
@ WoJ-Filter werden verwendet, um Nachrichten, die bestimmte Kriterien erfüllen, automatisch zu löschen. Ist das Problem , dass auch bei den older_than:Kriterien, die Nachrichten nur durch die Filter actioned erhalten , wenn Sie Ihren Posteingang eingehen und damit nach, dass die Filter nicht Auslöser , wenn die Nachrichten werden älter als die vorgegebene Zeit?
Nathan Craike
1
@ Nathan Craike: genau. Ich habe eine Reihe von Filtern, die eingehende E-Mails verarbeiten, aber wie Sie bereits erwähnt haben, gilt dies nur für eingehende E-Mails, nicht für die in der Einbox.
WoJ
Das wird nicht funktionieren. Laut Google sind Filtersuchen mit "label:", "in:", "is:", Datumsbereich (z. B. "vor:" oder "nach:") oder Sternenkriterien (z. B. "hat: gelber Stern") Nicht empfohlen, da sie niemals mit eingehenden E-Mails übereinstimmen.
DxTx
3

Warum nicht einfach suchen, auswählen und löschen?

Beispiel: Sie möchten alle E-Mails vor dem 1. Januar 2009 löschen. Sie suchen also in Google Mail nach -

before:2009/1/1

(Sie können nach allem suchen und der Rest dieser Antwort würde immer noch funktionieren.) Damit werden
alle Mails im Posteingang vor dem 1. Januar 2009 zurückgegeben.

Geben Sie hier die Bildbeschreibung ein

Jetzt wählen Sie alle Mails auf der aktuellen Seite aus, indem Sie dieses Kästchen ankreuzen -

Geben Sie hier die Bildbeschreibung ein

Google wählt alle E-Mails auf der Seite aus und fragt Sie, ob Sie alle E-Mails auswählen möchten, die Ihrer Suchanfrage entsprechen.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie auf klicken Select all conversations that match this search, werden alle E-Mails vor dem 1. Januar 2009 ausgewählt. Dies sind alle E-Mails, die Sie löschen möchten.

Sie können dann auf die DeleteSchaltfläche klicken und Sie werden gefragt, ob Sie sicher sind -

Diese Aktion wirkt sich auf alle Konversationen in dieser Suche aus. Sind Sie sicher, dass Sie fortfahren wollen?

Drücken Sie Okund Ihre Mails sollten gelöscht werden.

Bibhas
quelle
2
Achtung - Wenn Konversationen aktiviert sind, löschen Sie auch Nachrichten nach diesem Datum, wenn sie Teil einer Konversation sind, die vor dem angegebenen Datum stattfindet.
mhoran_psprep
Danke, aber das möchte ich nicht erreichen. Ich kenne die Suchoptionen und suche nach einer Möglichkeit, Nachrichten zuzuordnen, die "älter als 10 Tage" sind (zum Beispiel). Nicht "älter als der 1. Mai" (im Fall von heute). Die typische Verwendung wäre, Nachrichten zu entfernen, die nur für eine bestimmte Zeit sinnvoll sind, wie z. B. TV-Listen. Dies muss ein relatives Zeitmaß sein, kein datumsbasiertes.
WoJ
Möchten Sie einen Filter erstellen? Wenn nicht, ist es nur ein Schritt, "10 Tage älter" auf "vor dem 01.05.2012" zu setzen, was nicht länger als eine Sekunde dauert.
Bibhas
Wissen Sie, wie Sie ein Greasemonkey-Skript erstellen, das diese Aktion automatisch ausführt?
Anderson Green
2

Wenn Sie 10.000 E-Mails in Google haben, ist das Löschen von 8.000 von 20 E-Mails gleichzeitig keine unterhaltsame Option. Eine einfachere Option, wenn Sie eine sehr große Menge an E-Mails haben, besteht darin, einen kostenlosen E-Mail-Client wie Thunderbird zu erwerben und so einzurichten, dass E-Mails gelöscht werden, die älter als X Tage sind. Wenn Sie E-Mails länger als das Limit im E-Mail-Client behalten möchten, setzen Sie sie so, dass sie beim Löschen vom Client vom Server gelöscht werden. Überprüfen Sie dann ab und zu die E-Mails mit dem Client, um die E-Mails vom Server zu löschen.

Elrond
quelle
1

Ich habe so etwas gehackt. Ich habe es wahrscheinlich auf etwas gestützt, das jemand anderes geschrieben hat, aber es ist so lange her, dass ich mich nicht mehr erinnere.

Es hat seitdem zuverlässig weggetuckert. So funktioniert das:

Im Allgemeinen wird nach Nachrichten mit bestimmten Tags gesucht und dieses Tag dann durch ein anderes ersetzt und anschließend archiviert.

Insbesondere werden Nachrichten mit Posteingangsfiltern versehen, um anzuzeigen, wie sie "abgelaufen" sind. Im folgenden Beispiel basiert dies darauf, wie alt sie sind, und die Bezeichnung wird aufgerufen Bulk/Expires/[Daily|Weekly|Monthly]. (Hinweis: Dies ist ein verschachteltes Tag, aber sie müssen nicht verschachtelt sein. Ich möchte sie nur so organisieren.) Jeden Tag werden einige Google Apps-Skripte ausgeführt, um zu überprüfen, ob Threads in diesen Labels einer bestimmten Bedingung entsprechen, im Allgemeinen einem Datum. Dieses Tag wird dann durch ein anderes Tag ( Bulk/Expiredunten genannt) ersetzt und archiviert. Sie können die Nachricht auch einfach löschen lassen.

Dies ist Code (mit zusätzlichen Kommentaren), der Nachrichten bereinigt, die älter als ein Tag sind. Es ist so eingerichtet, dass es jeden Tag um 4 Uhr morgens ausgelöst wird:

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); 
      }
  }
}

Hier ist der Code dafür für Dinge, die in einer Woche oder einem Monat ablaufen sollten. Sie richten Trigger ein, um diese Funktionen entweder wöchentlich oder monatlich auszuführen.

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);
      }
  }
}

Im Moment arbeite ich an einer, die die Bulk/ExpiredNachrichten aufnimmt und wenn sie ein PurgeTag haben, werden sie dauerhaft gelöscht. Ich bin nicht geneigt, jemals eine E-Mail zu löschen (verrückt), aber viele archivierte Mailinglisten-Dinge verschmutzen die Suchergebnisse. Dieser Ärger hat begonnen, meine Tendenzen zum digitalen Horten zu überwältigen. Die einzige Änderung besteht darin, dass die forSchleife prüft, ob eine Nachricht das Tag "Löschen" enthält. Dies ist nicht trivial, da die Beschriftungen eines bestimmten Threads als Array zurückgegeben werden. Daher muss ich das Array überprüfen, das einige Codezeilen hinzufügt. Es sei denn, ich finde einen schlaueren Weg.

Ich verwende dies hauptsächlich, um Newsletter mit dem Google-Posteingang zu verwalten. Ich habe ein Nachrichtenpaket für das Tag "Bulk / Expires / Daily" eingerichtet, und der Filter stellt sicher, dass nur der heutige Newsletter vorhanden ist. Ob ich es dann an einem bestimmten Tag lese oder nicht, das Neueste ist da. Es ist ein bisschen so, als würde man den Posteingang in einen RSS-Reader hacken. Ich mache das Gleiche für regelmäßige Newsletter / Massenmailings, die wöchentlich oder monatlich erscheinen. Im Allgemeinen verfallen sie, wenn ihr Alter ihre Relevanz aufhebt.

ccoffman
quelle
1

Probieren Sie das neuere und effizientere Skript unter https://github.com/omkar9999/GmailCleaner aus

Das Skript bereinigt Tausende alter Junk-E-Mails innerhalb von Minuten, wenn es jede Minute ausgeführt werden soll, und überschreitet nicht das tägliche Kontingent von Google.

Omkar Marathe
quelle
0

Nein, das gibt es nicht. Ich würde vorschlagen, dass Al Everett die Frage, mit der Sie verbunden sind, erwähnt. Sie können verschiedene Links für die verschiedenen Aufgaben haben, die Sie ausführen möchten.

Es wäre schön, eine Möglichkeit zu haben, E-Mails, die älter als ein paar Tage sind, automatisch zu löschen, aber ab sofort können Sie dies nicht.

ComputerLocus
quelle
0

Sie können dieses Google-Skript auch verwenden. Der Vorteil wäre, dass Sie auch verschachtelte Beschriftungen vergeben können.

Google Apps Script; Google Mail-E-Mails löschen

Erstellen Sie zum Ausführen eine Kopie des Skripts, fügen Sie Werte für Label und "N" Tage hinzu, führen Sie Ausführen-> Initialisieren und dann Ausführen-> Installieren aus.

arunskrish
quelle
Eine ähnliche Antwort wurde auch auf Lifehacker
WoJ