Самая последняя версия приложения Gmail с отличной функцией, в которой вы можете выбирать между архивированием или ответом на электронные письма прямо из уведомления.
Моя проблема в том, что если вы заархивируете его из уведомления, оно останется непрочитанным (вместо того, чтобы быть помеченным как прочитанное). Есть ли способ обойти это?
Я бы хотел, чтобы любые электронные письма, которые архивируются непосредственно из уведомления, автоматически помечались как прочитанные.
Вы сказали Google Script?
Пометка Gmail прочитанным с помощью Apps Script
Идея этого сценария заключается в том, чтобы пометить как прочитанное любое сообщение, которого нет в папке «Входящие» (т. е. оно было заархивировано).
- Перейдите на script.google.com , чтобы запустить скрипт.
- Выберите создание сценария для Gmail в маленьком всплывающем окне.
- Удалите весь образец кода, который он вам дает.
Замените его на это (написано с использованием справочника по API ):
функция markArchivedAsRead() { var threads = GmailApp.search('метка:непрочитано -метка:входящие'); GmailApp.markThreadsRead(потоки); };Сохраните проект с помощью File > Save.
- Добавьте новую версию, используя «Файл» > «Управление версиями», введите «исходная версия», а затем отправьте ее.
- Выполните тестовый запуск, используя Run > markArchivedAsRead, и обязательно авторизуйте приложение, когда оно попросит вас об этом.
- Добавьте новый триггер, используя Ресурс > Триггеры текущего проекта, и выберите запуск вышеуказанной функции каждую минуту.
- Снова сохраните скрипт и выйдите.
Я не знаю, нужно ли запускать его каждую минуту , но пока вы запускаете его регулярно.
Это не прямой ответ на вашу проблему, и если у вас есть причины иметь непрочитанные сообщения, которых нет в папке «Входящие», это вам не подойдет.
Мне удалось заставить его работать со следующим скриптом 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, потребовав дождаться выполнения сценария, прежде чем он сможет работать.
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();
}
};
эль
Малабарба