Пометить Gmail как прочитанное при архивировании из уведомления

Самая последняя версия приложения Gmail с отличной функцией, в которой вы можете выбирать между архивированием или ответом на электронные письма прямо из уведомления.

Моя проблема в том, что если вы заархивируете его из уведомления, оно останется непрочитанным (вместо того, чтобы быть помеченным как прочитанное). Есть ли способ обойти это?

Я бы хотел, чтобы любые электронные письма, которые архивируются непосредственно из уведомления, автоматически помечались как прочитанные.

Я не верю, что в настоящее время это возможно. Единственное действие, которое вы можете изменить, это удалить вместо архивации.
@AlEverett Я надеялся, что это можно сделать с помощью альтернативного приложения или, по крайней мере, скрипта Google. знак равно

Ответы (4)

Вы сказали Google Script?

Пометка Gmail прочитанным с помощью Apps Script

Идея этого сценария заключается в том, чтобы пометить как прочитанное любое сообщение, которого нет в папке «Входящие» (т. е. оно было заархивировано).

  1. Перейдите на script.google.com , чтобы запустить скрипт.
  2. Выберите создание сценария для Gmail в маленьком всплывающем окне.
  3. Удалите весь образец кода, который он вам дает.
  4. Замените его на это (написано с использованием справочника по API ):

    функция markArchivedAsRead() {
       var threads = GmailApp.search('метка:непрочитано -метка:входящие');
       GmailApp.markThreadsRead(потоки);
     };
  5. Сохраните проект с помощью File > Save.

  6. Добавьте новую версию, используя «Файл» > «Управление версиями», введите «исходная версия», а затем отправьте ее.
  7. Выполните тестовый запуск, используя Run > markArchivedAsRead, и обязательно авторизуйте приложение, когда оно попросит вас об этом.
  8. Добавьте новый триггер, используя Ресурс > Триггеры текущего проекта, и выберите запуск вышеуказанной функции каждую минуту.
  9. Снова сохраните скрипт и выйдите.

Я не знаю, нужно ли запускать его каждую минуту , но пока вы запускаете его регулярно.

Это не прямой ответ на вашу проблему, и если у вас есть причины иметь непрочитанные сообщения, которых нет в папке «Входящие», это вам не подойдет.

У меня есть несколько фильтров, которые могут напрямую архивировать непрочитанные электронные письма, и я хотел бы сохранить их непрочитанными, но это действительно хорошее начало. У меня мог бы быть второй скрипт, который помечает специальной меткой непрочитанные темы в моем почтовом ящике. И тогда этот первый скрипт будет помечать только прочитанные архивные сообщения с этой меткой (вместо всех архивных сообщений).
Это также имеет небольшую ошибку. Если вы архивируете сообщение, а новое сообщение поступает в тот же поток до того, как сценарий сможет запуститься, то оба они будут помечены как прочитанные, когда сценарий действительно запустится. Это связано с тем, что GmailApp.search возвращает целые потоки, и ему все равно, было ли одно из сообщений в потоке в папке «Входящие».

Мне удалось заставить его работать со следующим скриптом Google .
Это почти то же самое, что и ответ @AlEverett, но он никогда не помечается как прочитанные сообщения, которые полностью пропустили папку «Входящие» (из фильтра или чего-то еще).

К сожалению, это не сработает, если вы будете архивировать сообщения очень быстро (в среднем менее 30 секунд).

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

Я считаю, что решил проблему с делом @BruceConnor, потребовав дождаться выполнения сценария, прежде чем он сможет работать.

  1. Я создал новый фильтр, который ищет что-либо в папке "Входящие"
  2. присваивает метку «i» (которая создается его версией)

Gmail жалуется, что фильтр никогда ничего не сопоставляет, но в этом случае он сопоставляет все входящие сообщения, которые остаются в папке «Входящие».

В результате все новые входящие сообщения автоматически «запоминаются» этим тегом, затем, когда вы нажмете «архивировать», скрипт может сравнить список входящих сообщений с меткой «i» и узнать, какие из них были только что заархивированы, а затем пометить только те, как « читать". Вам не нужно ждать, чтобы заархивировать, потому что все сообщения помещаются в очередь архива "i".

Бонус: я также установил новую метку «i» на «Скрыть в списке сообщений» и «Скрыть в списке меток», чтобы она вообще никогда не отображалась. (Нажмите маленькую стрелку рядом с новой меткой «i» и выберите эти параметры.)

Ответ @ al-e работает, но в комментариях упоминается небольшая ошибка. Я сделал другую версию скрипта, решающую эту ошибку, и успешно использую ее уже несколько лет. Вот сценарий, который я использую:

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