È possibile interrogare i messaggi di Gmail in base al timestamp?


13

È possibile cercare tutti i messaggi di Gmail in un intervallo più granulare rispetto al giorno?

Ad esempio, posso cercare tutti i messaggi di chat dalle 15:00 alle 17:00 il 4 ottobre? Come sarebbe?

Guardando il riferimento di ricerca avanzata di Gmail ho notato che menzionano i tempi specifici, ma non specificano il formato, molto probabilmente non è supportato, ma ho pensato che avrei controllato solo nel caso in cui stavo semplicemente inserendo ricerche nel formato sbagliato .. .

Esempio: dopo: 2004/04/16 prima: 2004/04/18

Significato: messaggi inviati tra il 16 aprile 2004 e il 18 aprile 2004. *

* Più precisamente: messaggi inviati dopo le 12:00 (o le 00:00) il 16 aprile 2004 e prima del 18 aprile 2004.

Risposte:


10

I tempi specifici sono menzionati nella documentazione per dimostrare che l'operatore "after" è inclusivo della data indicata, mentre l'operatore "before" è esclusivo della data. Non è possibile utilizzare la casella di ricerca in un intervallo di tempo più specifico.

Se si utilizzano gli script di Google Apps, è possibile effettuare la ricerca utilizzando le migliori date disponibili. Quindi puoi filtrare i thread risultanti in base al tempo e ad altri criteri. Esempio:

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
  }
}

NOTA: l'operatore "dopo" è comprensivo della data indicata, mentre l'operatore "prima" è escluso dalla data !!
— Habeeb Perwad,

Ciao Pyrodogg, posso unirmi all'etichetta use? GmailApp.search
— pathic

Se capisco correttamente la tua domanda, sì, puoi utilizzare le etichette anche nei criteri di ricerca. Ex. "dopo: 2019/01/01 prima: 2019/02/01 etichetta: acquisti". Se non ho capito la tua domanda, per favore fatemelo sapere.
— Pyrodogg,

8

È possibile specificare un intervallo di tempo con precisione fino a un secondo, perché gli operatori di ricerca dopo :, prima di :, più nuovi :, più vecchi: accettano i timestamp Unix . Usando uno strumento come Epoch Converter , puoi scoprirlo

  • 04/10/2014 alle 15:00 (usando GMT ad esempio) ha il timestamp 1412434800
  • Aggiungi due ore (7200 secondi) o utilizza nuovamente lo stesso strumento: 1412442000

La ricerca after:1412434800 before:1412442000restituirà i messaggi entro questo intervallo di 2 ore.

Dal momento che la conversione in tempo Unix sembra un lavoro ingrato, ho creato un bookmarklet che rende possibile questa sostituzione.

Ad esempio, dopo aver digitato

dopo: 2015/07/26 10:00 prima: 2015/07/27 11:30

nella casella di ricerca (che non funzionerebbe così com'è), invoca il bookmarklet e la stringa verrà sostituita da

dopo: 1437919200 prima: 1438011000

(Il bookmarklet interpreta i timestamp indicati nell'ora locale.)

La pagina che ho collegato ha sia il link sorgente che un link trascinabile con il bookmarklet. Per completezza, il codice sorgente è anche pubblicato di seguito.

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;
  } 
}

Sembra che after:UNIXTIMESTAMPnon
— funzioni

@Kunok sembra funzionare per me. potresti per favore elaborare?
— nakhli,

1
@nakhli Ugh..questo è vecchio. Ma per quanto mi ricordo penso di aver dato troppi caratteri int come input. Penso che dovessi rimuovere le ultime 3 cifre o qualcosa del genere. Un po 'come menziona questa risposta sopra, nota esempio in risposta, ha 10 caratteri, mentre Date.now()restituirebbe 13 caratteri. Qualcosa del genere. L'ho risolto e lo script funziona da allora, è ancora in esecuzione 0-24 negli ultimi 12 mesi e probabilmente funzionerà per molto tempo. Grazie. : P
— Kunok,

13 caratteri perché restituisce millisecondi
— Shiplu Mokaddim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.