2015-11-25 34 views
5

Wyniki różnią się w interfejsie Gmaila i w interfejsie internetowym Gmaila, gdy używasz standardowego formatu zapytania opisanego tutaj - https://support.google.com/mail/answer/7190.Interfejs Gmail API nie zwraca poprawnych wiadomości e-mail w porównaniu do interfejsu internetowego Gmaila dla zapytań o datę

Problem dotyczy wyłącznie parametrów after/before i newer/older. Na przykład następujące zapytanie APi Gmaila "after: 2015/11/19 before: 2015/11/20" zwraca różne wyniki w porównaniu z uruchomieniem tego samego zapytania w interfejsie internetowym Gmaila. Interfejs internetowy wygląda poprawnie, a api zwraca e-maile od następnego dnia (20). Być może problem z konwersacją w strefie czasowej?

Sprawdzanie poprzednich pytań Widzę coś podobnego tutaj how to use GMAIL API query filter for datetime (serwer przetwarza zapytania jako czas PST). W takim przypadku warto zaktualizować dokumentację lub pomyśleć o możliwym rozwiązaniu.

Kroki prowadzące do odtworzenia problemu.

  1. Masz kilka wiadomości e-mail na koncie Gmail obejmującym poniższe terminy. Inc dni po i wcześniej.
  2. Uruchom po: 2015/11/19 przed: 2015/11/20 w interfejsie internetowym Gmaila.
  3. Wyślij zapytanie do aplikacji Gmail za pomocą "after: 2015/11/19 before: 2015/11/20" dla parametru q, używając https://developers.google.com/gmail/api/v1/reference/users/messages/list
  4. Porównaj wyniki. (Różnice występowały podczas uruchamiania tych kroków na koncie Gmail w Wielkiej Brytanii).

Powinny widzieć tylko e-maile z XIX, ale widzę e-maile z dnia 19 i 20, kiedy używają api. Sieć ui działa zgodnie z oczekiwaniami i zwraca tylko e-maile z datą 19.

FYI: Używałem również innych parametrów zapytania, takich jak "from: [email protected]" w połączeniu z parametrami przed/po lub nowszym/starszym. Chciałem uprościć zgłoszenie błędu/pytanie.

Również: Zapytania api, które robiłem z modułem węzła o nazwie node-gmail-api. Sprawdzanie kodu punkt końcowy używany jest kod „Wiadomości”:

body: 'GET ' + api + '/gmail/v1/users/me/messages/' + m.id + fields + '\n' 

Czy problem, że „Wiadomości/lista” punkt końcowy jest nazywany „Wiadomości”, a nie? Jak odpowiedzieć na to pytanie? - Why does search in gmail API return different result than search in gmail website?

Czy to błąd/funkcja? Czy istnieje obejście takie jak użycie ms epok. (Również nie w docs jak widzę)

Dzięki

+0

Witamy w Stack Overflow Dan! Sam się z tym zmagałem i przeszedłem do [drugiego zapytania dokładności] (http://stackoverflow.com/questions/28022819/listing-messages-with-more-precision-than-yyyy-mm-dd) . Następnie możesz wpisać 'after: AND before: '. Warte spróbowania! – Tholle

+1

Wielkie dzięki Tholle. To się udało! W JavaScript użyłem następującego po konwersji daty na epokę var after = "2015/11/19"; var myDateAfter = new Date (po + "00:00:00"); var myEpochAfter = myDateAfter.getTime()/1000.0; Byłoby miło, gdyby dokumenty były aktualizowane i/lub działały zgodnie z oczekiwaniami. –

+0

Słodkie! :) Dodano odpowiedź. Zgadzam się, byłoby wspaniale, gdyby dokumentacja wspomniała o tym. – Tholle

Odpowiedz

6

Można list the messages z drugiej dokładnością, jeśli chcesz:

q = after:<start_of_day_in_seconds> AND before:<end_of_day_in_seconds> 

Tak np od Wed, 25 Nov 2015 00:00:00 GMT do Wed, 25 Nov 2015 23:59:59 GMT będzie:

q = after:1448409600 AND before:1448495999