È 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.