Gmail beim Archivieren aus der Benachrichtigung als gelesen markieren

Die neueste Version der Gmail-App als tolles Feature, bei dem Sie direkt aus der Benachrichtigung heraus wählen können, ob Sie E-Mails archivieren oder beantworten möchten.

Mein Problem ist, dass, wenn Sie es aus der Benachrichtigung archivieren, es ungelesen bleibt (anstatt als gelesen markiert zu werden). Kann man das irgendwie umgehen?

Ich möchte, dass alle E-Mails, die direkt aus der Benachrichtigung heraus archiviert werden, automatisch als gelesen markiert werden.

Ich glaube nicht, dass das derzeit möglich ist. Die einzige Aktion, die Sie ändern können, ist Löschen statt Archivieren.
@AlEverett Ich hatte gehofft, dass es eine Möglichkeit gibt, dies mit einer alternativen App oder zumindest einem Google-Skript zu tun. =/

Antworten (4)

Sagten Sie Google Script?

Google Mail mit Apps Script als gelesen markieren

Die Idee hinter diesem Skript ist es, alle Nachrichten als gelesen zu markieren, die sich nicht im Posteingang befinden (dh archiviert wurden).

  1. Gehen Sie zu script.google.com , um ein Skript zu starten.
  2. Wählen Sie im kleinen Popup aus, ein Skript für Gmail zu erstellen.
  3. Löschen Sie den gesamten Beispielcode, den Sie erhalten.
  4. Ersetzen Sie es durch Folgendes (geschrieben unter Verwendung der API-Referenz ):

    Funktion markArchivedAsRead() {
       var threads = GmailApp.search('label:unread -label:inbox');
       GmailApp.markThreadsRead(Threads);
     };
  5. Speichern Sie das Projekt mit Datei > Speichern.

  6. Fügen Sie eine neue Version hinzu, indem Sie Datei > Versionen verwalten verwenden, geben Sie „Erstversion“ ein und senden Sie diese dann ab.
  7. Führen Sie einen Testlauf mit Run > markArchivedAsRead durch und vergewissern Sie sich, dass Sie die App autorisieren, wenn Sie dazu aufgefordert werden.
  8. Fügen Sie einen neuen Trigger hinzu, indem Sie Ressource > Trigger des aktuellen Projekts verwenden, und wählen Sie, ob die obige Funktion jede Minute ausgeführt werden soll.
  9. Speichern Sie das Skript erneut und beenden Sie es.

Ich weiß nicht, ob es notwendig ist, es jede Minute auszuführen , aber solange Sie es regelmäßig ausführen.

Dies ist keine direkte Antwort auf Ihr Problem, und wenn Sie Gründe haben, ungelesene Nachrichten zu haben, die sich nicht in Ihrem Posteingang befinden, funktioniert dies nicht für Sie.

Ich habe einige Filter, die ungelesene E-Mails möglicherweise direkt archivieren, und ich möchte diese ungelesen lassen, aber das ist ein wirklich guter Anfang. Ich könnte ein zweites Skript haben, das die ungelesenen Threads in meinem Posteingang mit einem bestimmten Label markiert. Und dann würde dieses erste Skript nur archivierte Nachrichten mit diesem Label als gelesen markieren (anstelle aller archivierten Nachrichten).
Dies hat auch einen kleinen Fehler. Wenn Sie eine Nachricht archivieren und eine neue Nachricht im selben Thread eintrifft, bevor das Skript ausgeführt werden kann, werden beide als gelesen markiert, wenn das Skript ausgeführt wird. Das liegt daran, dass GmailApp.search ganze Threads zurückgibt und sich nicht darum kümmert, ob eine der Nachrichten im Thread im Posteingang war.

Ich habe es geschafft, es mit dem folgenden Google Script zum Laufen zu bringen .
Es ist fast dasselbe wie die Antwort von @AlEverett, aber es markiert niemals Nachrichten als gelesen, die den Posteingang vollständig übersprungen haben (von einem Filter oder so).

Leider funktioniert es für Sie nicht, wenn Sie Nachrichten sehr schnell archivieren (weniger als 30 Sekunden im Durchschnitt).

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

Ich glaube, ich habe das Problem mit dem Fall von @ BruceConnor gelöst, da ich warten musste, bis das Skript ausgeführt wurde, bevor es funktionieren kann.

  1. Ich habe einen neuen Filter erstellt, der nach allem im Posteingang sucht
  2. weist das "i"-Label zu (das von seiner Version erstellt wird)

Google Mail beschwert sich, dass der Filter niemals zu etwas passt, aber in diesem Fall passt er alle eingehenden Nachrichten an, die im Posteingang bleiben.

Das Ergebnis ist, dass alle neu eingehenden Nachrichten automatisch von diesem Tag „gespeichert“ werden. Wenn Sie dann auf „Archivieren“ klicken, kann das Skript die Posteingangsliste mit dem „i“-Label vergleichen und wissen, welche gerade archiviert wurden, und dann nur diese als „ lesen". Sie müssen mit dem Archivieren nicht warten, da alle Nachrichten der Archiv-Warteschlange „i“ zugewiesen werden.

Bonus: Ich habe das neue „i“-Label auch auf „Hide in message list“ und „Hide in label list“ gesetzt, sodass es überhaupt nicht angezeigt wird. (Klicken Sie auf den kleinen Pfeil neben dem neuen „i“-Label und wählen Sie diese Optionen aus.)

Die Antwort von @al-e funktioniert, aber in den Kommentaren wird ein kleiner Fehler erwähnt. Ich habe eine andere Version des Skripts erstellt, das diesen Fehler behebt, und verwende es seit einigen Jahren erfolgreich. Hier ist das Skript, das ich verwende:

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