Marcar Gmail como leído al archivar desde la notificación

10

La versión más reciente de la aplicación Gmail es la gran característica donde puede elegir entre archivar o responder correos electrónicos directamente desde la notificación.

Mi problema es que, si lo archiva desde la notificación, permanece sin leer (en lugar de estar marcado como leído). ¿Hay alguna forma de evitar eso?

Me gustaría que los correos electrónicos que se archivan directamente desde la notificación se marquen automáticamente como leídos.

Malabarba
fuente
1
No creo que eso sea posible actualmente. La única acción a la que puede cambiarlo es eliminar en lugar de archivar.
cerveza
@AlEverett Esperaba que hubiera una manera de hacerlo con una aplicación alternativa, o al menos un script de Google. = /
Malabarba

Respuestas:

5

¿Dijiste Google Script?

Marcado de Gmail leído con Apps Script

La idea detrás de este script es marcar como leído cualquier mensaje que no esté en la Bandeja de entrada (es decir, que haya sido archivado).

  1. Dirígete a script.google.com para comenzar un script.
  2. Elija crear un script para Gmail en la pequeña ventana emergente.
  3. Elimine todo el código de muestra que le da.
  4. Reemplácelo con esto (escrito usando la referencia API ):

    función markArchivedAsRead () {
       hilos var = GmailApp.search ('etiqueta: sin leer-etiqueta: bandeja de entrada');
       GmailApp.markThreadsRead (hilos);
     };
  5. Guarde el proyecto con Archivo> Guardar.

  6. Agregue una nueva versión usando Archivo> Administrar versiones e ingrese "versión inicial" y luego envíela.
  7. Realice una ejecución de prueba con Ejecutar> markArchivedAsRead y asegúrese de autorizar la aplicación cuando se lo solicite.
  8. Agregue un nuevo disparador usando Recursos> Disparadores del proyecto actual y elija ejecutar la función anterior cada minuto.
  9. Guarde el script nuevamente y salga.

No sé si es necesario ejecutarlo cada minuto , pero siempre que lo ejecutes regularmente.

Esta no es una respuesta directa a su problema, y ​​si tiene razones para tener mensajes no leídos que no están en su bandeja de entrada, esto no funcionará para usted.

cerveza inglesa
fuente
Tengo algunos filtros que pueden archivar directamente los correos no leídos, y me gustaría mantenerlos sin leer, pero ese es un buen comienzo. Podría tener un segundo script que marque con una etiqueta específica los hilos no leídos en mi bandeja de entrada. Y luego este primer script solo marcaría los mensajes archivados como leídos con esta etiqueta (en lugar de todos los mensajes archivados).
Malabarba
2
Esto también tiene un ligero error. Si archiva un mensaje y llega un nuevo mensaje en el mismo hilo antes de que el script tenga la oportunidad de ejecutarse, ambos se marcarán como leídos cuando el script se ejecute. Esto se debe a que GmailApp.search devuelve hilos completos y no le importa si uno de los mensajes del hilo estaba en la bandeja de entrada.
Malabarba
3

Logré hacerlo funcionar con el siguiente script de Google .
Es casi lo mismo que la respuesta de @ AlEverett, pero nunca marca como mensajes leídos que omitieron por completo la bandeja de entrada (de un filtro o algo así).

Desafortunadamente, no funcionará para usted si tiende a archivar mensajes muy rápidamente (menos de 30 segundos en promedio).

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

Creo que resolví el problema con el caso de @ BruceConnor, necesitando esperar a que el script se ejecute antes de que pueda funcionar.

  1. Creé un nuevo filtro que busca cualquier cosa en la bandeja de entrada
  2. asigna la etiqueta "i" (creada por su versión)

Gmail se queja de que el filtro nunca coincidirá con nada, pero en este caso sí coincide con todos los mensajes entrantes que permanecen en la bandeja de entrada.

El resultado es que todos los nuevos mensajes entrantes son "memorizados" automáticamente por esta etiqueta, luego, cuando presiona archivar, el script puede comparar la lista de la bandeja de entrada con la etiqueta "i" y saber cuáles acaban de archivarse, y luego marcar solo aquellos como " leer". No tiene que esperar para archivar, porque todos los mensajes se asignan a la cola de archivado "i".

Bonificación: también configuré la nueva etiqueta "i" en "Ocultar en la lista de mensajes" y "Ocultar en la lista de etiquetas", para que nunca aparezca. (Haga clic en la pequeña flecha junto a la nueva etiqueta "i" y elija estas opciones).

Brak
fuente
1

La respuesta de @ al-e funciona, pero tiene un pequeño error mencionado en los comentarios. He creado una versión diferente del script que resuelve este error y lo he usado con éxito durante algunos años. Aquí está el script que estoy 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();
  }
};
Zanahoria
fuente