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.
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).
- Gehen Sie zu script.google.com , um ein Skript zu starten.
- Wählen Sie im kleinen Popup aus, ein Skript für Gmail zu erstellen.
- Löschen Sie den gesamten Beispielcode, den Sie erhalten.
Ersetzen Sie es durch Folgendes (geschrieben unter Verwendung der API-Referenz ):
Funktion markArchivedAsRead() { var threads = GmailApp.search('label:unread -label:inbox'); GmailApp.markThreadsRead(Threads); };Speichern Sie das Projekt mit Datei > Speichern.
- Fügen Sie eine neue Version hinzu, indem Sie Datei > Versionen verwalten verwenden, geben Sie „Erstversion“ ein und senden Sie diese dann ab.
- Führen Sie einen Testlauf mit Run > markArchivedAsRead durch und vergewissern Sie sich, dass Sie die App autorisieren, wenn Sie dazu aufgefordert werden.
- 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.
- 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 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.
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();
}
};
Ale
Malabarba