11 votos

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

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

Mi problema es que, si lo archivan desde la notificación, es permanece sin leer (en lugar de ser marcado como leído). ¿Hay de todos modos para evitar eso?

Me gustaría que cualquier correo electrónico que se archiva directamente desde el notificación que se marcará automáticamente como leída.

1 votos

No creo que eso sea posible actualmente. La única acción que se puede cambiar es borrar en lugar de archivar.

0 votos

@AlEverett Esperaba que hubiera forma de hacerlo con una app alternativa, o al menos un script de google. =/

5voto

Lasse V. Karlsen Puntos 148037

¿Dijiste Google script?

Marcar Gmail como leído con aplicaciones 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 iniciar un script.

  2. Elige crear un script para Gmail en la pequeña ventana emergente.

  3. Borra todo el código de muestra que te da.

  4. Sustitúyalo por esto (escrito con la referencia API ):

    function markArchivedAsRead() {
       var threads = GmailApp.search('label:unread -label:inbox');
       GmailApp.markThreadsRead(threads);
     };
  5. Guarda el proyecto con Archivo > Guardar.

  6. Añade una nueva versión usando Archivo > Administrar Versiones e introduce "versión inicial" y luego envíala.

  7. Haz una prueba usando Run > markArchivedAsRead y asegúrate de autorizar la aplicación cuando te lo pida.

  8. Añade un nuevo disparador usando "Resource > Current Project's Triggers" y elige ejecutar la función anterior cada minuto.

  9. Guarda el script de nuevo y sal.

No sé si es necesario que se ejecute cada minuto pero siempre y cuando lo hagas regularmente.

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

0 votos

Tengo algunos filtros que podrían archivar directamente los correos no leídos, y me gustaría mantenerlos, pero eso es un buen comienzo. Podría tener un segundo script que marcara con una etiqueta específica los hilos no leídos en mi bandeja de entrada. Y entonces este primer script sólo marcaría como leídos los mensajes archivados con esta etiqueta (en lugar de todos los mensajes archivados).

2 votos

Esto también tiene un pequeño error. Si archivas 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 se ejecute el script. 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.

3voto

Me las arreglé para que funcionara con lo siguiente Google script .
Es casi lo mismo que la respuesta de @AlEverett, pero nunca marca como leídos los mensajes que se saltaron completamente la bandeja de entrada (de un filtro o algo así).

Desafortunadamente, no funcionará para ti si tiendes a archivar los mensajes muy rápidamente (menos de 30 segundos de media).

/** 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);
};

2voto

Brak Puntos 21

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

  1. He creado un nuevo filtro que busca cualquier cosa en la bandeja de entrada
  2. asigna la etiqueta "i" (que es 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 "Recibidos".

El resultado es que todos los nuevos mensajes entrantes son "memorizados" automáticamente por esta etiqueta, y luego cuando se pulsa el botón de archivar el script puede comparar la lista de la bandeja de entrada con la etiqueta "i" y saber cuáles acaban de ser archivados, y luego marcar sólo aquellos como "leídos". No tienes que esperar para archivar, porque todos los mensajes se asignan a la cola de la "i" de archivo.

Bono: También puse la nueva etiqueta "i" en "Esconder en lista de mensajes" y "Esconder en lista de etiquetas", así que nunca aparece. (Haz clic en la pequeña flecha junto a la nueva etiqueta "i" y elige estas opciones).

1voto

Asinox Puntos 1817

La respuesta de @al-e funciona, pero tiene un pequeño error mencionado en los comentarios. He hecho una versión diferente del script que resuelve este error y lo he estado utilizando con éxito durante unos 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();
  }
};

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X