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

10

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

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

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

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

Ответы:

5

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

Маркировка Gmail для чтения с помощью скрипта Apps

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

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

    function markArchivedAsRead () {
       var threads = GmailApp.search ('label: unread -label: inbox');
       GmailApp.markThreadsRead (нить);
     };
  5. Сохраните проект с помощью File> Save.

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

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

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

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

Мне удалось заставить его работать со следующим скриптом 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);
};
Malabarba
источник
2

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

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

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

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

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

Браке
источник
1

Ответ @ 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();
  }
};
Морковь
источник