Soluzione automatizzata per eliminare determinati messaggi Gmail precedenti a n giorni


8

Devo eliminare alcuni messaggi Gmail più vecchi di n giorni (posso ottenere l'intero set tramite una stringa di ricerca). So che questo non è possibile direttamente all'interno di Gmail (vedi ad esempio questa domanda ) quindi sto cercando una webapp in grado di gestire tali attività sul mio account (e, in generale, simili attività di pulizia).

Una soluzione automatizzata che contrassegna attivamente i messaggi come letti quando raggiungono un'età specifica è la soluzione desiderata. C'è un modo per farlo attraverso i filtri di Gmail e alcune sintassi? Ci sono app, script, ecc. Che potrebbero aiutare?


Potrebbe essere possibile scrivere uno script Greasemonkey che eseguirà questa azione.
Anderson Green,

Sono anche interessato a raggiungere questo obiettivo. Cercasi assistente.
Randy6T9,

Risposte:


0
  1. Non è disponibile alcuna funzione integrata in Gmail per fare ciò al momento di scrivere questa risposta (gennaio 2013).
  2. Ho avuto lo stesso problema con tutte queste vecchie newsletter e notifiche e ho creato lo script di app di Google per fare esattamente questo, con l'aiuto di filtri integrati. Controlla qui: http://2sdd.blogspot.ru/2012/11/how-to-clean-up-gmail-inbox-from-emails.html

Lo script è molto semplice, sentiti libero di hackerarlo secondo le tue esigenze.


Grazie - anche per lo script che sostanzialmente risolve il problema (anche se in modo indiretto, questo è qualcosa che dovrebbe davvero essere implementato da Google). Aggiornamento "miglior risposta" :)
WoJ

6

Secondo Google:

  • older_than, newer_than- Simile a più vecchio e più recente , ma consente le date relative usando d, m e y per giorno, mese e anno
    Esempio: newer_than:2d
    Significato: trova i messaggi inviati negli ultimi due giorni.

Con questo è possibile creare un filtro eliminando questi e anche solo i messaggi di posta in un'etichetta specifica.

Fonte .


1
Grazie ma questo non è quello che stavo cercando. So che posso cercare e-mail che soddisfano determinati criteri. Quello che voglio fare è avere un modo automatizzato di gestirli (in quel caso cancellare), senza azioni manuali da parte mia.
WoJ,

2
I filtri @WoJ consentono di eliminare automaticamente i messaggi che soddisfano determinati criteri. Il problema è che, anche con i older_than:criteri, i messaggi vengono attivati ​​dal filtro solo quando si accede alla posta in arrivo, quindi il filtro non si innescherà quando i messaggi diventano più vecchi di un determinato periodo?
Nathan Craike,

1
@Nathan Craike: esattamente. Ho un sacco di filtri che gestiscono la posta in arrivo ma, come hai detto, questo è solo per la posta in arrivo, non quello nella casella di posta elettronica.
WoJ,

Questo non funzionerà. Secondo Google, le ricerche di filtro contenenti "label:", "in:", "is:", l'intervallo di date (ad esempio "before:" o "after:") o i criteri con stelle (ad esempio "has: yellow-star") sono non raccomandato in quanto non corrisponderanno mai alla posta in arrivo.
DxTx,

3

Perché non cercare semplicemente, selezionare ed eliminare?

Esempio, vuoi eliminare tutte le mail prima del 1 ° gennaio 2009. Quindi cerchi Gmail per -

before:2009/1/1

(Puoi cercare qualsiasi cosa e il resto di questa risposta funzionerebbe ancora)
Che restituisce tutte le mail in arrivo prima del 1 gennaio 2009 -

inserisci qui la descrizione dell'immagine

Ora seleziona tutti i messaggi nella pagina corrente spuntando questa casella -

inserisci qui la descrizione dell'immagine

Google selezionerà tutti i messaggi sulla pagina e ti chiederà anche se desideri selezionare tutti i messaggi corrispondenti alla tua query di ricerca:

inserisci qui la descrizione dell'immagine

Se fai clic Select all conversations that match this search, selezionerà tutti i messaggi prima del 1 ° gennaio 2009, che sono tutti i messaggi che desideri eliminare.

Puoi quindi fare clic sul Deletepulsante e ti verrà chiesto se sei sicuro -

Questa azione influirà su tutte le conversazioni in questa ricerca. Sei sicuro di voler continuare?

Premi Oke la tua posta dovrebbe essere cancellata.


2
Attenzione: se le conversazioni sono attive, eliminerai anche tutti i messaggi dopo quella data se fanno parte di una conversazione che si verifica prima della data specificata.
mhoran_psprep,

Grazie ma questo non è quello che voglio ottenere. Conosco le opzioni di ricerca e quello che sto cercando è un modo per abbinare i messaggi "più vecchi di 10 giorni" (per esempio). Non "più vecchio del 1 ° maggio" (nel caso di oggi). L'uso tipico sarebbe quello di sbarazzarsi dei messaggi che hanno senso solo per un dato tempo, come gli elenchi TV. Questa deve essere una misura relativa del tempo, non basata sulla data.
WoJ,

Vuoi creare un filtro? In caso contrario, è solo una questione di passaggio da "10 giorni più vecchi" a "prima del 01-05-2012" che non richiede più di un secondo.
Bibhas,

Sai come creare uno script Greasemonkey che eseguirà questa azione automaticamente?
Anderson Green,

2

Se hai 10.000 e-mail su Google, eliminarne 8.000 alla volta 20 non è un'opzione divertente. Un'opzione più semplice se si dispone di una grande quantità di posta elettronica è quella di ottenere un client di posta elettronica gratuito come Thunderbird e configurarlo per eliminare la posta più vecchia di X numero di giorni. Se si desidera mantenere la posta più a lungo del limite nel client e-mail, impostarlo per eliminare dal server quando viene eliminato dal client. Quindi controlla l'e-mail con il client ogni tanto per eliminare l'e-mail dal server.


1

Ho qualcosa di simile hackerato. Probabilmente l'ho basato su qualcosa che qualcun altro ha scritto, ma è stato tanto tempo fa che non ricordo.

Da allora si è allontanato in modo affidabile. Ecco come funziona:

Generalmente, cerca i messaggi con determinati tag, quindi li sostituisce con un altro e li archivia.

In particolare , i messaggi sono taggati con filtri di posta in arrivo per indicare come saranno "scaduti". Nell'esempio che segue questo si basa sulla loro età e viene chiamata l'etichetta Bulk/Expires/[Daily|Weekly|Monthly]. (Nota: questo è un tag nidificato, ma non è necessario che siano nidificati, mi piace solo mantenerli organizzati in questo modo). Ogni giorno verranno eseguiti alcuni script di Google Apps per verificare se i thread all'interno di tali etichette corrispondono a una condizione, generalmente una data. Sostituirà quindi quel tag con un altro tag (chiamato Bulk/Expiredsotto) e lo archivierà. Potresti anche farlo eliminare il messaggio.

Questo è un codice (con commenti extra) che pulirà i messaggi più di un giorno prima. È impostato per attivarsi ogni giorno alle 4 del mattino:

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

Ecco il codice per farlo per cose che dovrebbero scadere tra una settimana o un mese, i trigger di configurazione per eseguire queste funzioni settimanalmente o mensilmente.

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

In questo momento sto lavorando a uno che prenderà i Bulk/Expiredmessaggi e se hanno un Purgetag li eliminerà in modo permanente. Non sono propenso a cancellare mai un'e-mail (pazza), ma molte cose archiviate nella mailing list tendono a inquinare i risultati della ricerca. Questo fastidio ha iniziato a travolgere le mie tendenze di accumulo digitale. L'unica modifica è che il forciclo verifica se un messaggio ha il tag "Elimina". Questo non è banale, perché le etichette di un determinato thread vengono restituite come array e quindi devo controllare quell'array che aggiungerà alcune righe di codice. A meno che non trovo un modo più semplice.

Lo uso principalmente per gestire newsletter con Google Inbox. Ho impostato un pacchetto di messaggi per il tag "Bulk / Expires / Daily" e il filtro assicura che sia presente solo la newsletter di oggi. Quindi, sia che lo legga in un determinato giorno o meno, l'ultimo è lì. È un po 'come hackerare Inbox in un lettore RSS. Faccio la stessa cosa per le normali newsletter / mailing collettivi che escono settimanalmente o mensilmente. Generalmente li espiro quando la loro età ne rimuove la rilevanza.



0

No non c'è, ciò che suggerirei di fare è qualcosa come Al Everett menziona sulla domanda a cui ti sei collegato. È possibile disporre di vari collegamenti per le diverse attività che si desidera eseguire.

Sarebbe bello avere un modo per eliminare automaticamente le e-mail più vecchie di qualche giorno, ma al momento non è possibile.


0

Puoi anche usare questo script di Google. Il vantaggio sarebbe che puoi dare anche etichette nidificate.

Google Apps Script; elimina le email di Gmail

Per eseguire, creare una copia dello script, aggiungere i valori per etichetta e giorni "N", eseguire Esegui-> Inizializza e quindi Esegui-> Installa.


Una risposta simile è stata inviata anche a Lifehacker
WoJ,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.