Oznacz archiwum Gmail jako przeczytane podczas archiwizacji z powiadomienia

10

Najnowsza wersja aplikacji Gmail jako świetna funkcja, w której możesz wybrać między archiwizacją a odpowiedzią na wiadomości e-mail bezpośrednio z powiadomienia.

Mój problem polega na tym, że jeśli zarchiwizujesz je z powiadomienia, pozostanie nieprzeczytane (zamiast oznaczenia jako przeczytane). Czy można to obejść?

Chciałbym, aby e-maile archiwizowane bezpośrednio z powiadomienia były automatycznie oznaczane jako przeczytane.

Malabarba
źródło
1
Nie wierzę, że jest to obecnie możliwe. Jedyną czynnością, na którą możesz to zmienić, jest usunięcie zamiast archiwizacji.
ale
@AlEverett Miałem nadzieję, że można to zrobić za pomocą alternatywnej aplikacji lub przynajmniej skryptu Google. = /
Malabarba,

Odpowiedzi:

5

Czy powiedziałeś Google Script?

Oznaczanie Gmaila jako przeczytanego za pomocą Apps Script

Ideą tego skryptu jest oznaczenie jako przeczytanej każdej wiadomości, która nie znajduje się w skrzynce odbiorczej (tj. Została zarchiwizowana).

  1. Wejdź na script.google.com, aby rozpocząć skrypt.
  2. Wybierz, aby utworzyć skrypt dla Gmaila w małym wyskakującym okienku.
  3. Usuń cały przykładowy kod, który ci daje.
  4. Zamień to na (napisane przy użyciu odwołania API ):

    funkcja markArchivedAsRead () {
       var Thread = GmailApp.search ('label: unread -label: inbox');
       GmailApp.markThreadsRead (wątki);
     };
  5. Zapisz projekt za pomocą Plik> Zapisz.

  6. Dodaj nową wersję za pomocą Plik> Zarządzaj wersjami i wprowadź „wersję początkową”, a następnie ją prześlij.
  7. Wykonaj uruchomienie testowe przy użyciu polecenia Uruchom> markArchivedAsRead i upewnij się, że aplikacja jest autoryzowana, gdy o to poprosi.
  8. Dodaj nowy wyzwalacz za pomocą opcji Zasoby> Wyzwalacze bieżącego projektu i wybierz uruchamianie powyższej funkcji co minutę.
  9. Zapisz skrypt ponownie i wyjdź.

Nie wiem, czy trzeba go uruchamiać co minutę , ale tak długo, jak regularnie.

To nie jest bezpośrednia odpowiedź na Twój problem, a jeśli masz powody, by mieć nieprzeczytane wiadomości, które nie znajdują się w Twojej skrzynce odbiorczej, to nie zadziała.

ale
źródło
Mam kilka filtrów, które mogą bezpośrednio archiwizować nieprzeczytane wiadomości e-mail i chciałbym, aby były nieprzeczytane, ale to naprawdę dobry początek. Mógłbym mieć drugi skrypt oznaczający określoną etykietą nieprzeczytane wątki w mojej skrzynce odbiorczej. A potem ten pierwszy skrypt oznaczałby tylko zarchiwizowane wiadomości z tą etykietą (zamiast wszystkich zarchiwizowanych wiadomości).
Malabarba
2
Ma to również niewielki błąd. Jeśli zarchiwizujesz wiadomość, a nowa wiadomość dotrze do tego samego wątku, zanim skrypt będzie miał szansę na uruchomienie, oba zostaną oznaczone jako przeczytane po uruchomieniu skryptu. Dzieje się tak, ponieważ GmailApp.search zwraca całe wątki i nie ma znaczenia, czy jedna z wiadomości w tym wątku znajduje się w skrzynce odbiorczej.
Malabarba
3

Udało mi się sprawić, że działa z następującym skryptem Google .
Jest to tak samo jak odpowiedź @ AlEverett, ale nigdy nie oznacza jako przeczytanych wiadomości, które całkowicie pominęły skrzynkę odbiorczą (z filtru lub czegoś takiego).

Niestety, nie zadziała to, jeśli archiwizujesz wiadomości bardzo szybko (średnio mniej niż 30 sekund).

/** 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
źródło
2

Wydaje mi się, że rozwiązałem problem ze sprawą @ BruceConnor i muszę poczekać na wykonanie skryptu, zanim będzie mógł działać.

  1. Utworzyłem nowy filtr, który szuka wszystkiego w skrzynce odbiorczej
  2. przypisuje etykietę „i” (która jest tworzona przez jego wersję)

Gmail skarży się, że filtr nigdy nie pasuje do niczego, ale w tym przypadku pasuje do wszystkich wiadomości przychodzących, które pozostają w skrzynce odbiorczej.

W rezultacie wszystkie nowe wiadomości przychodzące są automatycznie „zapamiętywane” przez ten znacznik, a następnie po naciśnięciu przycisku archiwum skrypt może porównać listę skrzynki odbiorczej z etykietą „i” i dowiedzieć się, które z nich zostały właśnie zarchiwizowane, a następnie oznaczyć tylko te jako „ czytać". Nie musisz czekać na archiwizację, ponieważ wszystkie wiadomości są przypisane do kolejki „i” archiwum.

Premia: Ustawiłem także nową etykietę „i” na „Ukryj na liście wiadomości” i „Ukryj na liście etykiet”, aby nigdy się nie wyświetlała. (Kliknij małą strzałkę obok nowej etykiety „i” i wybierz te opcje).

Brak
źródło
1

Odpowiedź @ al-e działa, ale ma mały błąd wspomniany w komentarzach. Stworzyłem inną wersję skryptu, która rozwiązuje ten błąd i z powodzeniem go używa od kilku lat. Oto skrypt, którego używam:

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();
  }
};
Marchewka
źródło