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


10

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

Моя проблема полягає в тому, що якщо ви архівуєте його з повідомлення, воно залишається непрочитаним (замість того, щоб бути позначеним як прочитане). Чи все-таки можна обійти це?

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


1
Я не вірю, що наразі це можливо. Єдина дія, яку ви можете змінити, це видалення замість архіву.
але

@AlEverett Я сподівався, що може бути спосіб це зробити за допомогою альтернативної програми або, принаймні, сценарію google. = /
Малабарба

Відповіді:


5

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

Позначення Gmail як прочитаного за допомогою сценарію програм

Ідея цього сценарію - позначити як прочитане будь-яке повідомлення, яке не знаходиться у папці "Вхідні" (тобто було заархівовано).

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

    функція markArchivedAsRead () {
       var теми = GmailApp.search ('label: непрочитані -label: вхідні');
       GmailApp.markThreadsRead (теми);
     };
  5. Збережіть проект за допомогою Файл> Зберегти.

  6. Додайте нову версію за допомогою Файл> Керуйте версіями та введіть "початкову версію", а потім надішліть її.
  7. Зробіть тестовий запуск за допомогою Run> markArchivedAsRead та будьте впевнені та авторизуйте програму, коли вона попросить вас.
  8. Додайте новий тригер за допомогою ресурсу> Поточні активатори поточного проекту та вибирайте запускати вищевказану функцію щохвилини.
  9. Знову збережіть сценарій та вийдіть.

Я не знаю, що потрібно бігати щохвилини , але доки ти регулярно працюєш.

Це не пряма відповідь на вашу проблему, і якщо у вас є причини для непрочитаних повідомлень, які не знаходяться у папці "Вхідні", це не працює для вас.


У мене є кілька фільтрів, які можуть безпосередньо архівувати непрочитані електронні листи, і я хотів би зберегти їх непрочитаними, але це дійсно вдалий початок. Я міг би мати другий сценарій, який маркує певною міткою непрочитані теми у моїй вхідній папці. І тоді цей перший сценарій позначав би лише прочитані заархівовані повідомлення з цією міткою (замість усіх архівованих повідомлень).
Малабарба

2
Це також має незначну помилку. Якщо ви архівуєте повідомлення, і нове повідомлення надходить у ту саму нитку до того, як сценарій зможе запуститися, вони обидва будуть позначені як прочитані, коли сценарій дійсно запущений. Це тому, що GmailApp.search повертає цілі потоки, і не байдуже, чи було одне з повідомлень у потоці у папці "Вхідні".
Малабарба

3

Мені вдалося змусити його працювати з наступним сценарієм Google .
Це almos так само, як відповідь @ 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);
};

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();
  }
};
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.