Tandai Gmail sebagai sudah dibaca saat pengarsipan dari notifikasi

10

Versi terbaru dari aplikasi Gmail sebagai fitur hebat di mana Anda dapat memilih antara pengarsipan atau membalas email secara langsung dari notifikasi.

Masalah saya adalah, jika Anda mengarsipkannya dari notifikasi, itu tetap belum dibaca (bukannya ditandai sebagai sudah dibaca). Apakah ada cara untuk menyiasatinya?

Saya ingin semua email yang diarsipkan langsung dari notifikasi ditandai secara otomatis sebagai sudah dibaca.

Malabarba
sumber
1
Saya tidak percaya itu saat ini mungkin. Satu-satunya tindakan yang dapat Anda ubah adalah menghapus bukan arsip.
ale
@AlEverett Saya berharap mungkin ada cara untuk melakukannya dengan aplikasi alternatif, atau setidaknya skrip google. = /
Malabarba

Jawaban:

5

Apakah Anda mengatakan Google Script?

Menandai Gmail dibaca dengan Apps Script

Gagasan di balik skrip ini adalah untuk menandai sebagai telah membaca pesan apa pun yang tidak ada di Kotak Masuk (yaitu, telah diarsipkan).

  1. Buka script.google.com untuk memulai skrip.
  2. Pilih untuk membuat skrip untuk Gmail di sembulan kecil.
  3. Hapus semua kode contoh yang diberikan kepada Anda.
  4. Ganti dengan ini (ditulis menggunakan referensi API ):

    function markArchivedAsRead () {
       var threads = GmailApp.search ('label: unread -label: inbox');
       GmailApp.markThreadsRead (utas);
     };
  5. Simpan proyek dengan File> Simpan.

  6. Tambahkan versi baru menggunakan File> Kelola Versi dan masukkan "versi awal" kemudian kirimkan.
  7. Lakukan uji coba menggunakan Run> markArchivedAsRead dan pastikan dan beri otorisasi aplikasi ketika diminta.
  8. Tambahkan pemicu baru menggunakan Sumber Daya> Pemicu Proyek Saat Ini dan pilih untuk menjalankan fungsi di atas setiap menit.
  9. Simpan skrip lagi dan keluar.

Saya tidak tahu bahwa itu perlu untuk menjalankannya setiap menit , tetapi selama Anda menjalankannya secara teratur.

Ini bukan jawaban langsung untuk masalah Anda, dan jika Anda memiliki alasan untuk memiliki pesan yang belum dibaca yang tidak ada di kotak masuk Anda ini tidak akan berfungsi untuk Anda.

bir
sumber
Saya memang memiliki beberapa filter yang mungkin secara langsung mengarsipkan email yang belum dibaca, dan saya ingin menyimpannya belum dibaca, tapi itu awal yang sangat bagus. Saya dapat memiliki skrip kedua yang menandai dengan label tertentu utas yang belum dibaca di kotak masuk saya. Dan kemudian skrip pertama ini hanya akan menandai-sebagai-baca pesan yang diarsipkan dengan label ini (bukan semua pesan yang diarsipkan).
Malabarba
2
Ini juga memiliki sedikit bug. Jika Anda mengarsipkan pesan dan pesan baru tiba di utas yang sama sebelum skrip memiliki kesempatan untuk menjalankan, maka keduanya akan ditandai sebagai sudah dibaca saat skrip dijalankan. Itu karena GmailApp.search mengembalikan seluruh utas, dan tidak peduli jika salah satu pesan di utas ada di kotak masuk.
Malabarba
3

Saya berhasil membuatnya bekerja dengan Google Script berikut .
Itu hampir sama dengan jawaban @ AlEverett, tetapi tidak pernah menandai sebagai pesan yang dibaca yang melewatkan kotak masuk seluruhnya (dari filter atau sesuatu).

Sayangnya, itu tidak akan berfungsi untuk Anda jika Anda cenderung mengarsipkan pesan dengan sangat cepat (rata-rata kurang dari 30 detik).

/** Mark as read archived threads which were previously in the inbox (determined by the label "i"). **/
function cleanAndroidArchived(){
  markArchivedAsRead();
  labelInboxAsI();
}

function markArchivedAsRead() {
  var threads = GmailApp.search('in:unread label:i -label:inbox');
  var label = GmailApp.createLabel("i");
  label.removeFromThreads(threads);
  GmailApp.markThreadsRead(threads);
};

function labelInboxAsI() {
  var threads = GmailApp.search('in:unread label:inbox');
  var label = GmailApp.createLabel("i");
  label.addToThreads(threads);
};
Malabarba
sumber
2

Saya yakin saya telah menyelesaikan masalah dengan kasus @ BruceConnor, perlu menunggu skrip untuk dieksekusi sebelum dapat bekerja.

  1. Saya membuat filter baru yang mencari apa saja di kotak masuk
  2. menugaskan label "i" (yang dibuat oleh versinya)

Gmail mengeluh bahwa filter tidak akan pernah cocok dengan apa pun, tetapi dalam hal ini filter tersebut cocok dengan semua pesan masuk yang tetap ada di kotak masuk.

Hasilnya adalah bahwa semua pesan masuk yang baru secara otomatis "dihafal" oleh tag ini, maka ketika Anda menekan arsip skrip dapat membandingkan daftar kotak masuk dengan label "i" dan tahu mana yang baru saja diarsipkan, dan kemudian tandai hanya sebagai " Baca". Anda tidak perlu menunggu untuk mengarsipkan, karena semua pesan ditetapkan ke dalam antrian arsip "i".

Bonus: Saya juga mengatur label "i" baru menjadi "Sembunyikan dalam daftar pesan" dan "Sembunyikan dalam daftar label", sehingga tidak pernah muncul sama sekali. (Klik panah kecil di sebelah label "i" baru dan pilih opsi ini.)

Rem
sumber
1

Jawaban @ al-e bekerja, tetapi memang ada sedikit bug yang disebutkan dalam komentar. Saya telah membuat versi berbeda dari skrip yang memecahkan bug ini dan telah berhasil menggunakannya selama beberapa tahun. Berikut skrip yang saya gunakan:

function markArchivedAsRead() {
  var threads = GmailApp.search('label:unread -label:inbox');
  for (var i=0; i<threads.length; i++)
  {
    var messages = threads[i].getMessages();
    var markUnread = 1;
    for (var j=0; j<messages.length; j++)
    {
      if (messages[j].isInInbox())
        markUnread = 0;
    }
    if (markUnread)
      threads[i].markRead();
  }
};
Wortel
sumber