Solusi otomatis untuk menghapus pesan Gmail tertentu yang lebih lama dari n hari

8

Saya perlu menghapus pesan Gmail tertentu yang lebih lama dari n hari (saya dapat memperoleh seluruh rangkaian melalui string pencarian). Saya tahu ini tidak mungkin secara langsung dalam Gmail (lihat misalnya pertanyaan ini ) jadi saya mencari webapp yang dapat menangani aktivitas seperti itu di akun saya (dan, umumnya, tugas-tugas rumah tangga serupa).

Solusi otomatis yang akan secara aktif menandai pesan sebagai sudah dibaca ketika mereka mencapai usia yang ditentukan adalah solusi yang diinginkan. Apakah ada cara untuk melakukan ini melalui filter Gmail dan beberapa sintaks? Apakah ada aplikasi, skrip, dll. Yang akan membantu?

WoJ
sumber
Dimungkinkan untuk menulis skrip Greasemonkey yang akan melakukan tindakan ini.
Anderson Green
Saya juga tertarik untuk menyelesaikan ini. Dibutuhkan bantuan.
Randy6T9

Jawaban:

0
  1. Tidak ada fitur bawaan di Gmail untuk melakukan ini sejak menulis jawaban ini (Jan 2013).
  2. Saya memiliki masalah yang sama dengan semua buletin dan pemberitahuan lama ini dan saya telah membuat skrip aplikasi Google untuk melakukan hal ini, dengan bantuan dari filter bawaan. Silakan periksa di sini: http://2sdd.blogspot.ru/2012/11/how-to-clean-up-gmail-inbox-from-emails.html

Script sangat sederhana, silakan meretasnya untuk kebutuhan Anda sendiri.

Igor Romanov
sumber
Terima kasih - juga untuk skrip yang pada dasarnya menyelesaikan masalah (meskipun secara tidak langsung, ini adalah sesuatu yang harus benar-benar diterapkan oleh Google). Memperbarui "jawaban terbaik" :)
WoJ
6

Menurut Google:

  • older_than, newer_than- Mirip dengan yang lebih lama dan yang lebih baru , tetapi memungkinkan tanggal relatif menggunakan d, m, dan y untuk hari, bulan, dan tahun
    Contoh: newer_than:2d
    Artinya: Menemukan pesan yang dikirim dalam dua hari terakhir.

Dengan ini, Anda dapat membuat filter menghapus ini, dan bahkan hanya email dalam label tertentu.

Sumber .

Omid Chini Foroushan
sumber
1
Terima kasih tapi ini bukan yang saya cari. Saya tahu bahwa saya dapat mencari email yang memenuhi kriteria tertentu. Yang ingin saya lakukan adalah memiliki cara otomatis untuk menanganinya (hapus dalam hal itu), tanpa tindakan manual dari pihak saya.
WoJ
2
@WoJ Filter adalah apa yang Anda gunakan untuk secara otomatis menghapus pesan yang memenuhi kriteria tertentu. Apakah masalah yang, bahkan dengan older_than:kriteria, pesan hanya akan ditindaklanjuti oleh filter ketika memasuki kotak masuk Anda, dan jadi setelah itu, filter tidak akan memicu ketika pesan menjadi lebih tua dari periode yang diberikan?
Nathan Craike
1
@Nathan Craike: tepatnya. Saya memiliki banyak filter yang menangani surat masuk tetapi, seperti yang Anda sebutkan, ini hanya untuk surat masuk, bukan yang ada di kotak masuk.
WoJ
Ini tidak akan berhasil. Menurut Google, pencarian Filter yang mengandung "label:", "di:", "adalah:", rentang tanggal (misalnya "sebelum:" atau "setelah:") atau kriteria bintang (mis. "Memiliki: bintang kuning") adalah tidak direkomendasikan karena mereka tidak akan pernah cocok dengan surat masuk.
DxTx
3

Mengapa tidak mencari, memilih, dan menghapus?

Contoh, Anda ingin menghapus semua email sebelum 1 Januari 2009. Jadi Anda mencari Gmail untuk -

before:2009/1/1

(Anda dapat mencari apa saja dan sisa jawaban ini masih berfungsi)
Yang mengembalikan semua email di kotak masuk sebelum 1 Januari 2009 -

masukkan deskripsi gambar di sini

Sekarang Anda memilih semua email di halaman saat ini dengan mencentang kotak ini -

masukkan deskripsi gambar di sini

Google akan memilih semua email pada halaman dan juga menanyakan apakah Anda ingin memilih semua email yang cocok dengan permintaan pencarian Anda -

masukkan deskripsi gambar di sini

Jika Anda mengklik Select all conversations that match this search, itu akan memilih semua surel sebelum 1 Januari 2009, yang merupakan surel yang ingin Anda hapus.

Anda kemudian dapat mengklik Deletetombol dan itu akan menanyakan apakah Anda yakin -

Tindakan ini akan memengaruhi semua percakapan dalam pencarian ini. Apakah anda yakin ingin melanjutkan?

Tekan Okdan email Anda harus dihapus.

Bibhas
sumber
2
Perhatian - jika percakapan diaktifkan, Anda juga akan menghapus pesan apa pun setelah tanggal tersebut jika itu adalah bagian dari percakapan yang terjadi sebelum tanggal yang ditentukan.
mhoran_psprep
Terima kasih tapi ini bukan yang ingin saya capai. Saya tahu tentang opsi pencarian dan apa yang saya cari adalah cara untuk mencocokkan pesan "lebih dari 10 hari" (misalnya). Tidak "lebih tua dari 1 Mei" (dalam kasus hari ini). Penggunaan tipikal adalah untuk menghilangkan pesan yang masuk akal hanya untuk waktu tertentu, seperti daftar TV. Ini perlu menjadi ukuran waktu relatif, bukan yang berbasis tanggal.
WoJ
Apakah Anda ingin membuat filter? Jika tidak, itu hanya masalah satu langkah untuk mengubah "10 hari lebih tua" menjadi "sebelum 01-05-2012" yang tidak memakan waktu lebih dari satu detik.
Bibhas
Apakah Anda tahu cara membuat skrip Greasemonkey yang akan melakukan tindakan ini secara otomatis?
Anderson Green
2

Jika Anda memiliki 10.000 email di google, menghapus 8.000 di antaranya 20 sekaligus bukanlah opsi yang menyenangkan. Opsi yang lebih mudah jika Anda memiliki jumlah email yang sangat besar adalah untuk mendapatkan klien email gratis seperti Thunderbird dan mengaturnya untuk menghapus email yang lebih lama dari X jumlah hari. Jika Anda ingin menyimpan email lebih lama dari batas di klien email, aturlah untuk menghapus dari server ketika dihapus dari klien. Kemudian, periksa email dengan klien sesering mungkin untuk menghapus email dari server.

Elrond
sumber
1

Saya punya sesuatu seperti ini diretas. Saya mungkin mendasarkannya pada sesuatu yang ditulis orang lain, tetapi sudah lama sekali saya tidak ingat.

Sejak itu telah menjauh dengan andal. Begini cara kerjanya:

Secara umum, ia mencari pesan dengan tag tertentu dan kemudian mengganti tag itu dengan yang lain lalu mengarsipkannya.

Secara khusus , pesan ditandai dengan filter kotak masuk untuk menunjukkan bagaimana mereka akan "kedaluwarsa." Dalam contoh di bawah ini didasarkan pada berapa usia mereka, dan labelnya disebut Bulk/Expires/[Daily|Weekly|Monthly]. (Catatan: ini adalah tag bersarang, tetapi mereka tidak perlu disarangkan, saya hanya ingin membuat mereka teratur seperti ini). Setiap hari beberapa Skrip Google Apps akan dijalankan untuk memeriksa apakah utas dalam label tersebut cocok dengan suatu kondisi, umumnya tanggal. Kemudian akan mengganti tag itu dengan tag lain (disebut di Bulk/Expiredbawah) dan mengarsipkannya. Anda juga bisa menghapus pesan itu.

Ini adalah kode (dengan komentar tambahan) yang akan membersihkan pesan lebih dari satu hari. Ini pengaturan untuk memicu setiap hari pada jam 4 pagi:

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

Berikut kode untuk melakukan ini untuk hal-hal yang seharusnya berakhir dalam seminggu atau sebulan, Anda mengatur pemicu untuk menjalankan fungsi-fungsi ini baik mingguan atau bulanan.

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

Saat ini saya sedang mengerjakan salah satu yang akan menerima Bulk/Expiredpesan dan jika mereka memiliki Purgetag, itu akan menghapusnya secara permanen. Saya enggan untuk pernah menghapus email (gila), tetapi banyak dari mailing list yang diarsipkan cenderung mencemari hasil pencarian. Gangguan ini sudah mulai membanjiri kecenderungan menimbun digital saya. Satu-satunya perubahan adalah forloop memeriksa untuk melihat apakah pesan memiliki tag 'Bersihkan'. Ini bukan sepele, karena label yang diberikan thread dikembalikan sebagai array, dan jadi saya harus memeriksa array yang akan menambahkan beberapa baris kode. Kecuali saya menemukan cara yang lebih licin.

Saya terutama menggunakan ini untuk mengelola buletin dengan Google Inbox. Saya menyiapkan bundel pesan untuk tag `Massal / Kedaluwarsa / Harian ', dan filter memastikan hanya buletin hari ini di sana. Lalu apakah saya membacanya pada hari tertentu atau tidak, yang terbaru ada di sana. Ini seperti meretas Kotak Masuk ke pembaca RSS. Saya melakukan hal yang sama untuk buletin berkala / surat massal yang keluar mingguan atau bulanan. Secara umum saya kadaluwarsa ketika usia mereka menghilangkan relevansinya.

ccoffman
sumber
1

Coba skrip yang lebih baru dan efisien di https://github.com/omkar9999/GmailCleaner

Skrip akan membersihkan ribuan email sampah lama dalam beberapa menit jika dijadwalkan berjalan setiap menit dan tidak akan melewati Kuota Harian Google.

omkar marathe
sumber
0

Tidak, tidak ada, apa yang saya sarankan lakukan adalah sesuatu seperti Al Everett menyebutkan pertanyaan yang Anda tautkan. Anda dapat memiliki berbagai tautan untuk berbagai tugas yang ingin Anda lakukan.

Akan menyenangkan memiliki cara untuk menghapus email yang lebih tua dari beberapa hari secara otomatis tetapi pada saat ini Anda tidak bisa.

ComputerLocus
sumber
0

Anda juga dapat menggunakan skrip google ini. Keuntungannya adalah Anda dapat memberikan label bersarang juga.

Google Apps Script; hapus surel Gmail

Untuk menjalankan, buat salinan skrip, tambahkan nilai untuk label dan "N" hari, lakukan Run-> Inisialisasi dan kemudian Run-> Instal.

arunskrish
sumber
Jawaban serupa juga telah diposting ke Lifehacker
WoJ