Marque o Gmail como lido ao arquivar a partir da notificação

10

A versão mais recente do aplicativo Gmail como o ótimo recurso em que você pode escolher entre arquivar ou responder a e-mails diretamente da notificação.

Meu problema é que, se você arquivar a partir da notificação, ela permanecerá não lida (em vez de ser marcada como lida). Existe alguma maneira de contornar isso?

Gostaria que todos os emails arquivados diretamente da notificação fossem automaticamente marcados como lidos.

Malabarba
fonte
11
Não acredito que isso seja possível no momento. A única ação que você pode alterar é excluir em vez de arquivar.
ale
@ AlEverett Eu esperava que houvesse uma maneira de fazer isso com um aplicativo alternativo ou pelo menos um script do google. = /
Malabarba

Respostas:

5

Você disse Google Script?

Marcando a leitura do Gmail com o Apps Apps

A idéia por trás desse script é marcar como lida qualquer mensagem que não esteja na Caixa de entrada (ou seja, foi arquivada).

  1. Vá para script.google.com para iniciar um script.
  2. Escolha criar um script para o Gmail no pequeno pop-up.
  3. Exclua todo o código de exemplo que ele fornece.
  4. Substitua-o por este (escrito usando a referência da API ):

    função markArchivedAsRead () {
       var threads = GmailApp.search ('label: unread -label: inbox');
       GmailApp.markThreadsRead (threads);
     };
  5. Salve o projeto em Arquivo> Salvar.

  6. Adicione uma nova versão usando Arquivo> Gerenciar versões e digite "versão inicial" e envie-a.
  7. Faça um teste usando Run> markArchivedAsRead e certifique-se de autorizar o aplicativo quando ele solicitar.
  8. Adicione um novo gatilho usando Recurso> Triggers do projeto atual e escolha executar a função acima a cada minuto.
  9. Salve o script novamente e saia.

Não sei se é necessário executá-lo a cada minuto , mas contanto que você o execute regularmente.

Esta não é uma resposta direta ao seu problema e, se você tiver motivos para ter mensagens não lidas que não estão na sua caixa de entrada, isso não funcionará para você.

cerveja
fonte
Eu tenho alguns filtros que podem arquivar diretamente os emails não lidos e gostaria de mantê-los não lidos, mas é um bom começo. Eu poderia ter um segundo script que marque com um rótulo específico os tópicos não lidos na minha caixa de entrada. E esse primeiro script marcaria apenas as mensagens arquivadas como lidas com esse rótulo (em vez de todas as mensagens arquivadas).
Malabarba
2
Isso também tem um pequeno erro. Se você arquivar uma mensagem e uma nova mensagem chegar no mesmo encadeamento antes que o script possa ser executado, os dois serão marcados como lidos quando o script for executado. Isso ocorre porque o GmailApp.search retorna threads inteiros e não se importa se uma das mensagens do thread estava na caixa de entrada.
Malabarba
3

Consegui fazê-lo funcionar com o seguinte script do Google .
É quase o mesmo que a resposta de @ AlEverett, mas nunca marca como mensagens lidas que pularam completamente a caixa de entrada (de um filtro ou algo assim).

Infelizmente, isso não funcionará para você se você arquivar mensagens muito rapidamente (menos de 30 segundos em média).

/** 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
fonte
2

Acredito que resolvi o problema com o caso de @ BruceConnor, precisando aguardar a execução do script antes que ele possa funcionar.

  1. Criei um novo filtro que procura qualquer coisa na caixa de entrada
  2. atribui o rótulo "i" (criado por sua versão)

O Gmail reclama que o filtro nunca corresponde a nada, mas, nesse caso, corresponde a todas as mensagens recebidas que ficam na caixa de entrada.

O resultado é que todas as novas mensagens recebidas são automaticamente "memorizadas" por essa tag. Quando você clica no arquivo, o script pode comparar a lista da caixa de entrada com o rótulo "i" e saber quais foram arquivadas e depois marcar apenas como " ler". Você não precisa esperar para arquivar, porque todas as mensagens são atribuídas à fila "i" de arquivamento.

Bônus: também defino o novo marcador "i" como "Ocultar na lista de mensagens" e "Ocultar na lista de marcadores", para que ele nunca apareça. (Clique na pequena seta ao lado do novo rótulo "i" e escolha essas opções.)

Brak
fonte
1

A resposta do @ al-e funciona, mas possui um pequeno bug mencionado nos comentários. Criei uma versão diferente do script que resolve esse bug e o utilizo há alguns anos. Aqui está o script que estou usando:

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