Ist es möglich, Google Mail-Nachrichten nach Zeitstempel abzufragen?

13

Ist es möglich, alle Google Mail-Nachrichten innerhalb eines Bereichs zu durchsuchen, der differenzierter ist als der Tag?

Könnte ich beispielsweise am 4. Oktober von 15 bis 17 Uhr nach allen Chat-Nachrichten suchen? Wie würde das aussehen?

In der Referenz für die erweiterte Google Mail-Suche habe ich festgestellt, dass sie bestimmte Zeiten angeben, das Format jedoch nicht angeben. Wahrscheinlich wird dies nicht unterstützt. Ich dachte jedoch, ich würde es überprüfen, falls ich einfach Suchanfragen im falschen Format eingebe. .

Beispiel: nach: 2004/04/16 vor: 2004/04/18

Bedeutung: Nachrichten, die zwischen dem 16. April 2004 und dem 18. April 2004 gesendet wurden. *

* Genauer gesagt: Nachrichten, die nach dem 16. April 2004 (00:00 Uhr) und vor dem 18. April 2004 gesendet wurden.

oncifer
quelle

Antworten:

10

Die spezifischen Zeiten sind in der Dokumentation angegeben, um zu zeigen, dass der Operator "after" das angegebene Datum enthält, während der Operator "before" das angegebene Datum nicht enthält. Es gibt keine Möglichkeit, das Suchfeld für einen genaueren Zeitraum zu verwenden.

Wenn Sie Google Apps Scripts verwenden, können Sie Ihre Suche mit den besten Daten durchführen, die Sie haben. Anschließend können Sie die resultierenden Threads basierend auf der Zeit und anderen Kriterien filtern. Beispiel:

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
quelle
HINWEIS: Der Operator "after" schließt das angegebene Datum ein, während der Operator "before" das angegebene Datum ausschließt !!
Habeeb Perwad
Hallo Pyrodogg, kann ich mich mit use label anmelden? GmailApp.search
Pathic
Wenn ich Ihre Frage richtig verstehe, können Sie Beschriftungen auch in den Suchkriterien verwenden. Ex. "nach: 2019/01/01 vor: 2019/02/01 label: purchase". Wenn ich Ihre Frage nicht verstanden habe, lassen Sie es mich bitte wissen.
Pyrodogg
8

Es ist möglich, einen Zeitbereich mit einer Genauigkeit von bis zu einer Sekunde anzugeben, da die Suchoperatoren nach :, vor :, neu :, älter: Unix-Zeitstempel akzeptieren . Mit einem Tool wie Epoch Converter können Sie dies herausfinden

  • 2014-10-04 um 15:00 Uhr (z. B. mit GMT) hat den Zeitstempel 1412434800
  • Fügen Sie zwei Stunden (7200 Sekunden) hinzu oder verwenden Sie dasselbe Werkzeug erneut: 1412442000

Durch Suchen nach after:1412434800 before:1412442000werden die Nachrichten innerhalb dieses 2-Stunden-Bereichs zurückgegeben.

Da die Umstellung auf Unix-Zeit wie eine lästige Arbeit aussieht, habe ich ein Lesezeichen erstellt , das diese Ersetzung vornimmt.

Zum Beispiel nach dem Tippen

nach: 26.07.2015 10:00 vor: 27.07.2015 11:30

Rufen Sie im Suchfeld (was nicht so funktionieren würde, wie es ist) das Lesezeichen auf, und die Zeichenfolge wird durch ersetzt

nachher: ​​1437919200 vorher: 1438011000

(Das Lesezeichen interpretiert die angegebenen Zeitstempel in Ihrer Ortszeit.)

Die Seite, die ich verlinkt habe, enthält sowohl die Quelle als auch einen ziehbaren Link zum Lesezeichen. Der Vollständigkeit halber wird der Quellcode auch unten veröffentlicht.

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

quelle
Es scheint, dass after:UNIXTIMESTAMPnicht richtig funktioniert ...
Kunok
@ Kunok scheint für mich zu funktionieren. Könnten Sie bitte näher darauf eingehen?
Nakhli
1
@ nakhli Ugh..das ist alt. Aber soweit ich mich erinnere, habe ich zu viele Zeichen eingegeben. Ich glaube, ich musste die letzten 3 Ziffern oder so etwas entfernen. Etwas, wie diese Antwort oben erwähnt, notieren Sie Beispiel in Antwort, es hat 10 Zeichen, während Date.now()13 Zeichen zurückgeben würde. Sowas in der Art. Ich habe es behoben und das Skript funktioniert seitdem, es läuft immer noch zwischen 0 und 24 in den letzten 12 Monaten und wird wahrscheinlich sehr lange laufen. Vielen Dank. : P
Kunok
13 Zeichen, weil es Millisekunden zurückgibt
Shiplu Mokaddim