Czy można wyszukiwać wiadomości Gmaila według datownika?

13

Czy można przeszukiwać wszystkie wiadomości Gmaila w zakresie bardziej szczegółowym niż w ciągu dnia?

Czy mogę na przykład wyszukać wszystkie wiadomości czatu od 15:00 do 17:00 w dniu 4 października? Jak by to wyglądało?

Patrząc na odniesienie do zaawansowanego wyszukiwania w Gmailu zauważyłem, że wspominają konkretne czasy, ale nie określają formatu, najprawdopodobniej nie jest obsługiwany, ale pomyślałem, że sprawdzę na wypadek, gdyby po prostu wpisałem wyszukiwania w niewłaściwym formacie. .

Przykład: po: 2004/04/16 przed: 2004/04/18

Czyli: wiadomości wysłane między 16 kwietnia 2004 r. A 18 kwietnia 2004 r. *

* Dokładniej: wiadomości wysłane po godzinie 12:00 (lub 00:00) 16 kwietnia 2004 r. I przed 18 kwietnia 2004 r.

oncifer
źródło

Odpowiedzi:

10

Konkretne godziny podano w dokumentacji, aby pokazać, że operator „po” zawiera podaną datę, podczas gdy operator „przed” nie obejmuje tej daty. Nie ma możliwości korzystania z pola wyszukiwania w bardziej szczegółowym zakresie czasu.

Jeśli korzystasz ze skryptów Google Apps, możesz przeprowadzić wyszukiwanie przy użyciu najlepszych dostępnych dat. Następnie możesz filtrować wynikowe wątki na podstawie czasu i innych kryteriów. Przykład:

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
źródło
UWAGA: operator „po” zawiera podaną datę, podczas gdy operator „przed” wyklucza datę !!
Habeeb Perwad
Cześć Pyrodogg, czy mogę dołączyć za pomocą etykiety użytkowej? GmailApp.search
Pathic
Jeśli dobrze rozumiem twoje pytanie, tak, możesz używać etykiet również w kryteriach wyszukiwania. Dawny. „po: 2019/01/01 przed: 2019/02/01 etykieta: zakupy”. Jeśli nie zrozumiałem twojego pytania, daj mi znać.
Pyrodogg,
8

Możliwe jest określenie zakresu czasu z dokładnością do jednej sekundy, ponieważ operatory wyszukiwania po :, przed :, nowszym :, starszym: akceptują znaczniki czasu Unix . Za pomocą takiego narzędzia, jak Epoch Converter , możesz się tego dowiedzieć

  • 04.10.2014 o 15:00 (na przykład przy użyciu GMT) ma sygnaturę czasową 1412434800
  • Dodaj dwie godziny (7200 sekund) lub użyj tego samego narzędzia: 1412442000

Wyszukiwanie after:1412434800 before:1412442000spowoduje zwrócenie wiadomości w tym 2-godzinnym zakresie.

Ponieważ przejście na czas uniksowy wygląda jak obowiązek, stworzyłem bookmarklet, który sprawia, że ​​ta zamiana jest na miejscu.

Na przykład po wpisaniu

po: 26.07.2015 10:00 przed: 27.07.2015 11:30

w polu wyszukiwania (które nie działałoby tak, jak jest), wywołaj bookmarklet, a ciąg zostanie zastąpiony przez

po: 1437919200 przed: 1438011000

(Bookmarklet interpretuje podane znaczniki czasu w Twoim czasie lokalnym).

Strona, którą podłączyłem, ma zarówno źródło, jak i przeciągalny link do bookmarkletu. Dla kompletności kod źródłowy jest również opublikowany poniżej.

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

źródło
Wygląda na after:UNIXTIMESTAMPto, że nie działa poprawnie ...
Kunok
@Kokok wydaje mi się działać. czy mógłbyś opracować?
nakhli,
1
@nakhli Ugh .. to jest stare. Ale o ile pamiętam, myślę, że podałem mu zbyt wiele znaków int jako danych wejściowych. Myślę, że musiałem usunąć ostatnie 3 cyfry lub coś w tym rodzaju. W pewnym sensie, jak wspomniano w powyższej odpowiedzi, zwróć uwagę na przykład w odpowiedzi, ma on 10 znaków, a Date.now()zwraca 13 znaków. Coś w tym stylu. Naprawiłem to i skrypt działa od tego czasu, wciąż działa od 0 do 24 w ciągu ostatnich 12 miesięcy i prawdopodobnie będzie działał bardzo długo. Dzięki. : P
Kunok,
13 znaków, ponieważ zwraca milisekundy
Shiplu Mokaddim