web-dev-qa-db-fra.com

Est-il possible d'interroger les messages Gmail par horodatage?

Est-il possible de rechercher tous les messages Gmail dans une plage plus granulaire que le jour?

Par exemple, est-ce que je peux rechercher tous les messages de chat de 15h à 17h le 4 octobre? Comment cela ressemblerait-il?

En regardant le référence de recherche avancée Gmail , j'ai remarqué qu'ils mentionnaient des heures précises, mais ne spécifiaient pas le format. Il est fort probable qu'il ne soit pas pris en charge, mais je pensais que je vérifierais au cas où j'entrerais simplement. recherche dans le mauvais format ...

Exemple: après: le 2004/04/16 avant: le 2004/04/18

Signification: Messages envoyés entre le 16 avril 2004 et le 18 avril 2004. *

* Plus précisément: Messages envoyés après 00h00 (ou 00h00) le 16 avril 2004 et avant le 18 avril 2004.

13
oncifer

Les heures spécifiques sont mentionnées dans la documentation pour montrer que l'opérateur "après" comprend la date indiquée, tandis que l'opérateur "avant" exclut la date. Il n'y a aucun moyen d'utiliser le champ de recherche sur une plage de temps plus spécifique.

Si vous utilisez des scripts Google Apps, vous pouvez effectuer votre recherche en utilisant les meilleures dates. Ensuite, vous pouvez filtrer les threads résultants en fonction de l'heure et d'autres critères. Exemple:

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

Il est possible de spécifier une plage de temps avec une précision allant jusqu’à une seconde, car les opérateurs de recherche suivants:, avant:, plus récents:, anciens: acceptent les horodatages Unix . En utilisant un outil tel que Epoch Converter , vous pouvez découvrir que

  • 2014-10-04 à 15h00 (en utilisant GMT par exemple) a l'horodatage 1412434800
  • Ajoutez deux heures (7200 secondes) ou utilisez à nouveau le même outil: 1412442000

La recherche de after:1412434800 before:1412442000 renverra les messages dans cet intervalle de 2 heures.

Étant donné que la conversion au format Unix ressemble à une corvée, j'ai créé un bookmarklet qui permet cette substitution.

Par exemple, après avoir tapé

après: 2015/07/26 10:00 avant: 2015/07/27 11:30

dans la zone de recherche (qui ne fonctionnerait pas tel quel), appelez le bookmarklet et la chaîne sera remplacée par

après: 1437919200 avant: 1438011000

(Le bookmarklet interprète les horodatages donnés dans votre heure locale.)

La page que j'ai liée a à la fois la source et un lien déplaçable avec le bookmarklet. Pour être complet, le code source est également publié ci-dessous.

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