如何在给定的时间点后使用javascript和gmail API检索消息?

时间:2018-07-19 10:35:21

标签: javascript gmail-api

我有一个使用gmail API和javascript处理gmail消息的网页。我被困在某个特定的时间戳之后想要检索消息的位置。

这是列出邮件的代码的一部分

{
var request = gapi.client.gmail.users.messages.list({
      'userId': 'me',
      'maxResults': 10

 });

我想列出长日期1531958459000之后的邮件。

我的尝试如下

{
var request = gapi.client.gmail.users.messages.list({
      'userId': 'me',
      'after':'1531958459000',
      'maxResults': 10

 });

,它似乎不起作用。而不是在那之后收到消息,而是随机获得10条消息,就像没有after部分的代码一样。

有帮助吗?

2 个答案:

答案 0 :(得分:0)

这里的代码有两个问题。

首先,您不能将字段after放入请求正文中。但是,您具有q字段,可用于输入Gmail查询,就像在Gmail应用程序中一样。查看文档以了解更多详细信息:https://developers.google.com/gmail/api/v1/reference/users/messages/list

第二,似乎after查询不支持以毫秒为单位的时间戳,而是以秒为单位。

因此,您的代码应如下所示:

var request = gapi.client.gmail.users.messages.list({
  'userId': 'me',
  'q':'after:1531958459',
  'maxResults': 10
});

最诚挚的问候!

答案 1 :(得分:0)

我知道了。基本上,其他查询参数接受'q':作为查询和任何参数。这些参数应符合根据google's documentation进行的常规Gmail收件箱搜索的格式。

所以我不得不将长日期更改为yyyy/mm/dd格式。我使用this answer的提示来做到这一点。

然后修改我的代码,如下所示:

{
var ld = new Date(lastupdatedtime).toJSON().slice(0, 10).split("-").reverse().join("/");//lastupdated time in google search query string like format
var cd = new Date(+ new Date()).toJSON().slice(0, 10).split("-").reverse().join("/");//the current time in google search query string like format
var search_query = "after:"+ld+" before:"+cd;
var request = gapi.client.gmail.users.messages.list({
      'userId': 'me',          
      'q': search_query,
      'maxResults': 10//the number of results to check through

    });

效果很好。