Markieren Sie Google Mail beim Lesen aus der Benachrichtigung als gelesen

10

Die neueste Version der Google Mail-App als großartige Funktion, mit der Sie zwischen der Archivierung oder dem Beantworten von E-Mails direkt aus der Benachrichtigung wählen können.

Mein Problem ist, dass wenn Sie es aus der Benachrichtigung archivieren, es ungelesen bleibt (anstatt als gelesen markiert zu werden). Gibt es überhaupt etwas zu umgehen?

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

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

Antworten:

5

Haben Sie Google Script gesagt?

Markieren von Google Mail mit Apps Script gelesen

Die Idee hinter diesem Skript ist es, jede Nachricht, die sich nicht im Posteingang befindet (dh archiviert wurde), als gelesen zu markieren.

  1. Gehen Sie zu script.google.com , um ein Skript zu starten.
  2. Erstellen Sie im kleinen Popup ein Skript für Google Mail.
  3. Löschen Sie den gesamten Beispielcode, den Sie erhalten.
  4. Ersetzen Sie es durch dieses (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 über Datei> Versionen verwalten hinzu, geben Sie "Erstversion" ein und senden Sie diese ab.
  7. Führen Sie einen Testlauf mit Run> markArchivedAsRead durch und stellen Sie sicher, dass Sie die App autorisieren, wenn Sie dazu aufgefordert werden.
  8. Fügen Sie über Ressource> Auslöser des aktuellen Projekts einen neuen Trigger hinzu und führen Sie die obige Funktion jede Minute aus.
  9. Speichern Sie das Skript erneut und beenden Sie es.

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

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

Ale
quelle
Ich habe einige Filter, mit denen ungelesene E-Mails direkt archiviert werden können, 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 einer bestimmten Bezeichnung markiert. Und dann würde dieses erste Skript nur archivierte Nachrichten mit dieser Bezeichnung als gelesen markieren (anstelle aller archivierten Nachrichten).
Malabarba
2
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. Dies liegt daran, dass GmailApp.search ganze Threads zurückgibt und es egal ist, ob sich eine der Nachrichten im Thread im Posteingang befand.
Malabarba
3

Ich habe es geschafft, dass es mit dem folgenden Google Script funktioniert .
Es ist almos dasselbe wie die Antwort von @ AlEverett, aber es werden niemals als gelesene Nachrichten markiert, die den Posteingang vollständig übersprungen haben (von einem Filter oder etwas anderem).

Leider funktioniert es bei Ihnen nicht, wenn Sie Archivnachrichten sehr schnell bearbeiten (durchschnittlich weniger als 30 Sekunden).

/** 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
quelle
2

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

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

Google Mail beschwert sich, dass der Filter niemals mit etwas übereinstimmt, in diesem Fall jedoch mit allen eingehenden Nachrichten, die im Posteingang verbleiben.

Das Ergebnis ist, dass alle neuen eingehenden Nachrichten automatisch von diesem Tag "gespeichert" werden. Wenn Sie dann auf "Archivieren" klicken, kann das Skript die Posteingangsliste mit der Bezeichnung "i" vergleichen und wissen, welche gerade archiviert wurden, und dann nur diejenigen als "markieren". lesen". Sie müssen nicht warten, um zu archivieren, da alle Nachrichten in der Archiv-Warteschlange "i" zugewiesen sind.

Bonus: Ich habe auch das neue "i" -Label auf "In Nachrichtenliste ausblenden" und "In Etikettenliste ausblenden" gesetzt, damit es überhaupt nicht angezeigt wird. (Klicken Sie auf den kleinen Pfeil neben dem neuen "i" -Label und wählen Sie diese Optionen.)

Bremse
quelle
1

Die Antwort von @ al-e funktioniert, aber es gibt einen kleinen Fehler, der in den Kommentaren erwähnt wird. Ich habe eine andere Version des Skripts erstellt, die 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();
  }
};
Karotte
quelle