Bildirimden arşivleme yaparken Gmail'i okundu olarak işaretleme


10

Gmail uygulamasının en son sürümü, doğrudan bildirimden e-postaları arşivleme veya yanıtlama arasında seçim yapabileceğiniz harika bir özelliktir.

Benim sorunum, eğer bildirimden arşivlerseniz, okunmamış olarak kalır (okunmuş olarak işaretlenmek yerine). Bunu aşmak için yine de var mı?

Doğrudan bildirimden arşivlenen tüm e-postaların otomatik olarak okundu olarak işaretlenmesini istiyorum.


1
Bunun mümkün olduğuna inanmıyorum. Değiştirebileceğiniz tek işlem arşiv yerine silmek.
ale

@AlEverett Alternatif bir uygulama veya en azından bir google betiği ile yapmanın bir yolu olabileceğini umuyordum. = /
Malabarba

Yanıtlar:


5

Google Script mi ​​dediniz?

Gmail okumasını Apps Komut Dosyası ile işaretleme

Bu komut dosyasının arkasındaki fikir Gelen Kutusunda olmayan herhangi bir iletiyi okundu olarak işaretlemektir (yani, arşivlenmiştir).

  1. Bir komut dosyası başlatmak için script.google.com adresine gidin.
  2. Küçük açılır pencerede Gmail için bir komut dosyası oluşturmayı seçin.
  3. Size verdiği tüm örnek kodu silin.
  4. Bunu bununla değiştirin ( API referansı kullanılarak yazılmıştır ):

    işlev markArchivedAsRead () {
       var threads = GmailApp.search ('label: unread -label: inbox');
       GmailApp.markThreadsRead (konu);
     };
  5. Projeyi Dosya> Kaydet ile kaydedin.

  6. Dosya> Sürümleri Yönet'i kullanarak yeni bir sürüm ekleyin ve "ilk sürümü" girin ve ardından gönderin.
  7. Çalıştır> markArchivedAsRead kullanarak bir test çalıştırması yapın ve sizden istendiğinde uygulamayı yetkilendirin.
  8. Kaynak> Mevcut Proje'nin Tetikleyicilerini kullanarak yeni bir tetikleyici ekleyin ve yukarıdaki işlevi her dakika çalıştırmayı seçin.
  9. Komut dosyasını tekrar kaydedin ve çıkın.

Her dakika çalıştırmanın gerekli olduğunu bilmiyorum , ama düzenli olarak çalıştırdığınız sürece.

Bu, sorununuza doğrudan bir yanıt değildir ve gelen kutunuzda bulunmayan okunmamış iletileriniz varsa, bu sizin için çalışmaz.


Okunmamış e-postaları doğrudan arşivleyebilecek bazı filtrelerim var ve bunları okunmamış tutmak istiyorum, ama bu gerçekten iyi bir başlangıç. Gelen kutumdaki okunmamış konuları belirli bir etiketle işaretleyen ikinci bir komut dosyası olabilir. Ve sonra bu ilk komut dosyası, arşivlenen iletileri yalnızca bu etiketle (arşivlenen tüm iletiler yerine) okundu olarak işaretler.
Malabarba

2
Bunun da küçük bir hatası var. Bir iletiyi arşivlerseniz ve komut dosyasının çalışma şansı olmadan aynı ileti dizisine yeni bir ileti gelirse, komut dosyası çalıştığında her ikisi de okundu olarak işaretlenir. Bunun nedeni, GmailApp.search'ün tüm ileti dizilerini döndürmesi ve ileti dizisindeki iletilerden birinin gelen kutusunda olup olmadığını umursamamasıdır.
Malabarba

3

Aşağıdaki Google Script ile çalışmasını sağladım .
@ AlEverett'in cevabı ile aynıdır, ancak asla gelen kutusunu tamamen atlayan (bir filtreden veya başka bir şeyden) okunmuş mesajlar olarak işaretlenmez.

Ne yazık ki, iletileri çok hızlı bir şekilde arşivlerseniz (ortalama 30 saniyeden az) sizin için işe yaramaz.

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

2

@ BruceConnor'ın davasıyla ilgili sorunu çözdüğüme inanıyorum, komut dosyasının çalışabilmesi için çalışmasını beklemek zorundayım.

  1. Gelen kutusunda herhangi bir şey arayan yeni bir filtre oluşturdum
  2. "i" etiketini atar (sürümü tarafından oluşturulur)

Gmail filtrenin hiçbir şeyle eşleşmeyeceğinden şikayet eder, ancak bu durumda gelen kutusunda kalan tüm gelen iletilerle eşleşir.

Sonuç olarak, tüm yeni gelen iletiler bu etiket tarafından otomatik olarak "ezberlenir", ardından arşivi tıkladığınızda komut dosyası gelen kutusu listesini "i" etiketi ile karşılaştırabilir ve hangilerinin arşivlendiğini bilir ve yalnızca bunları " "okuyun. Tüm mesajlar arşiv "i" kuyruğuna atandığından arşivlemek için beklemek zorunda değilsiniz.

Bonus: Ayrıca yeni "i" etiketini "Mesaj listesinde gizle" ve "Etiket listesinde gizle" olarak ayarladım, böylece hiçbir zaman görünmez. (Yeni "i" etiketinin yanındaki küçük oku tıklayın ve bu seçenekleri seçin.)


1

@ al-e'nin cevabı işe yarıyor, ancak yorumlarda bahsedilen küçük bir hata var. Komut dosyasının bu hatayı çözen ve birkaç yıldır başarıyla kullandığım farklı bir sürümünü yaptım. İşte kullandığım komut dosyası:

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();
  }
};
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.