API Gmail не возвращает правильные электронные письма по сравнению с веб-интерфейсом Gmail для запросов даты

Результаты отличаются для API Gmail и веб-интерфейса Gmail при использовании описанного здесь стандартного формата запроса - https://support.google.com/mail/answer/7190.

Проблема конкретно в параметрах после / до и новее / старше. Например, следующий запрос API Gmail «после: 2015/11/19 до: 2015/11/20» возвращает другие результаты по сравнению с выполнением того же запроса в веб-интерфейсе Gmail. Веб-интерфейс выглядит правильно, тогда как API возвращает электронные письма со следующего дня (20-го). Возможно, проблема в разговоре с часовым поясом?

Проверяя прошлые вопросы, я вижу здесь нечто похожее как используйте фильтр запросов GMAIL API для datetime (сервер обрабатывает запросы как время PST). В этом случае, возможно, стоит обновить документацию или подумать о возможном решении.

Шаги по воспроизведению проблемы.

  1. Имейте почту в учетной записи Gmail на даты, указанные ниже. Через несколько дней после и до.
  2. Выполнить после: 2015/11/19 до: 2015/11/20 в веб-интерфейсе Gmail.
  3. Запросите API Gmail с помощью "after: 2015/11/19 before: 2015/11/20" для параметра q, используя https://developers.google.com/gmail/api/v1/reference/users./messages/list
  4. Сравните результаты. (У меня были различия при выполнении этих шагов с учетной записью Gmail в Великобритании)

Должны видеть только письма от 19-го числа, но я вижу письма от 19-го И 20-го при использовании API. Веб-интерфейс работает должным образом и возвращает только электронные письма от 19-го числа.

К вашему сведению: я также использовал другие параметры запроса, такие как «from: [email protected]» в сочетании с параметрами «до / после» или «новые / старые». Я хотел упростить отчет / вопрос об ошибке.

Также: запросы api, которые я делал с помощью модуля узла, называемого node-gmail-api. Проверка кода используемой конечной точки - это код сообщений:

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

Проблема в том, что вызывается конечная точка «сообщения», а не «сообщения / список»? Согласно ответу на этот вопрос? - Почему поиск в API Gmail возвращает результат, отличный от результатов поиска на сайте Gmail?

Это ошибка / особенность? Есть ли обходной путь, такой как использование эпохи мс. (также не в документации, как я вижу)

Спасибо


person Dan Perry    schedule 25.11.2015    source источник
comment
Добро пожаловать в Stack Overflow, Дэн! Я сам боролся с этим и перешел на запрос второй точности. Тогда вы можете написать after:<start_of_day_in_seconds> AND before:<end_of_day_in_seconds>. Стоит попробовать!   -  person Tholle    schedule 25.11.2015
comment
Большое спасибо Толле. Это сработало! В Javascript я использовал следующее, чтобы преобразовать дату в эпоху var after = 2015/11/19; var myDateAfter = новая дата (после + 00:00:00); var myEpochAfter = myDateAfter.getTime () / 1000.0; Было бы неплохо, если бы документы обновлялись и / или чтобы они работали должным образом.   -  person Dan Perry    schedule 25.11.2015
comment
Сладкий! :) Добавил ответ. Я согласен, было бы здорово, если бы это упоминалось в документации.   -  person Tholle    schedule 25.11.2015


Ответы (1)


Вы можете перечислить сообщения со второй точностью, если хотите как:

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

Так, например, от Wed, 25 Nov 2015 00:00:00 GMT до Wed, 25 Nov 2015 23:59:59 GMT будет:

q = after:1448409600 AND before:1448495999
person Tholle    schedule 25.11.2015