¿Es posible consultar los mensajes de Gmail por marca de tiempo?

13

¿Es posible buscar todos los mensajes de Gmail dentro de un rango más granular que el día?

Por ejemplo, ¿podría buscar todos los mensajes de chat de 3pm a 5pm el 4 de octubre? ¿Cómo se vería eso?

Al mirar la referencia de búsqueda avanzada de Gmail , noté que mencionan los tiempos específicos, pero no especifican el formato, lo más probable es que no sea compatible, pero pensé que lo comprobaría en caso de que simplemente estuviera ingresando búsquedas en el formato incorrecto. .

Ejemplo: después: 16/04/2004 antes: 18/04/2004

Significado: Mensajes enviados entre el 16 de abril de 2004 y el 18 de abril de 2004. *

* Más precisamente: mensajes enviados después de las 12:00 a.m. (o 00:00) del 16 de abril de 2004 y antes del 18 de abril de 2004.

oncifer
fuente

Respuestas:

10

Los tiempos específicos se mencionan en la documentación para mostrar que el operador "después" incluye la fecha indicada, mientras que el operador "antes" no incluye la fecha. No hay forma de usar el cuadro de búsqueda en un rango de tiempo más específico.

Si está utilizando los scripts de Google Apps, puede hacer su búsqueda utilizando las mejores fechas que tenga. Luego puede filtrar los hilos resultantes en función del tiempo y otros criterios. Ejemplo:

var threads = GmailApp.search("after:2014/09/01 before:2014/09/02",0,100);
var timeFrom = new Date("2014/09/01 10:00:00").getTime();
var timeTo = new Date("2014/09/01 13:00:00").getTime();

for (var i = 0; i < threads.length; i++){
  var timeThreadStart = threads[i].getFirstMessageDate().getTime();

  if(timeThreadStart > timeFrom && timeThreadStart < timeTo){
    //do something
  }
}
Pyrodogg
fuente
NOTA: ¡el operador "después" incluye la fecha dada, mientras que el operador "antes" no incluye la fecha!
Habeeb Perwad
Hola Pyrodogg, ¿puedo unirme con la etiqueta de uso? GmailApp.search
Pathic
Si entiendo su pregunta correctamente, sí, puede usar etiquetas también en los criterios de búsqueda. Ex. "después: 2019/01/01 antes: 2019/02/01 etiqueta: compras". Si no entendí tu pregunta, házmelo saber.
Pyrodogg
8

Es posible especificar un rango de tiempo con precisión de hasta un segundo, porque los operadores de búsqueda después de :, antes de :, más nuevos :, más antiguos: aceptan marcas de tiempo de Unix . Usando una herramienta como Epoch Converter , puede descubrir que

  • 2014-10-04 a las 15:00 (usando GMT por ejemplo) tiene la marca de tiempo 1412434800
  • Agregue dos horas (7200 segundos) o use la misma herramienta nuevamente: 1412442000

La búsqueda after:1412434800 before:1412442000devolverá los mensajes dentro de este rango de 2 horas.

Dado que la conversión al tiempo de Unix parece una tarea rutinaria, hice un marcador que hace que esta sustitución esté en su lugar.

Por ejemplo, después de escribir

después: 2015/07/26 10:00 antes: 2015/07/27 11:30

en el cuadro de búsqueda (que no funcionaría como está), invoque el marcador y la cadena se reemplazará por

después: 1437919200 antes: 1438011000

(El bookmarklet interpreta las marcas de tiempo dadas en su hora local).

La página que vinculé tiene la fuente y un enlace arrastrable con el marcador. Para completar, el código fuente también se publica a continuación.

inp = document.querySelectorAll('input');
for (i in inp) {
  if (/(after|before|newer|older):/.test(inp[i].value)) {
    str = inp[i].value;
    times = str.match(/\d[\d\/: ]*\d/g);
    for (j in times) {
      if (Date.parse(times[j])) {
        str = str.replace(times[j], Date.parse(times[j])/1000);
      }
    }
    inp[i].value = str;
  } 
}

fuente
Parece que after:UNIXTIMESTAMPno funciona correctamente ...
Kunok
@Kunok parece funcionar para mí. ¿podrías por favor elaborar?
nakhli
1
@nakhli Ugh ... esto es viejo. Pero por lo que recuerdo, creo que le di demasiados caracteres int como entrada. Creo que tuve que eliminar los últimos 3 dígitos o algo así. Como se menciona en esta respuesta anterior, tenga en cuenta el ejemplo en la respuesta, tiene 10 caracteres, mientras Date.now()que devolvería 13 caracteres. Algo como eso. Lo arreglé y el script funciona desde entonces, todavía se ejecuta 0-24 los últimos 12 meses, y probablemente se ejecutará durante mucho tiempo. Gracias. : P
Kunok
13 caracteres porque devuelve milisegundos
Shiplu Mokaddim