2014-11-04 28 views

回答

1

我只是想说,使用JavaScript库 - messages.list不返回日期ASC或日期DESC。据我所知,它们是随机返回的。

起初我以为它可能是我的代码,因为我正在使用jQuery $ .each来解析通过JSON,但即使使用本地JavaScript for循环它们仍然不是日期顺序。看起来返回的消息大部分都是DESC日期,但是偶尔会发生一次错误。我做了相当多的操作来试图诊断,思考......也许这些消息属于同一个线程......但事实并非如此。

如果有人有正确的方式继续使用JavaScript库的提示,请发帖。我宁愿只处理消息,因为我的应用程序是一个简单的记录,而不是完整的CRUD消息......所以我只需要一个简单的反向日期顺序消息列表。

附加:我也使用threads.list和threads.get来返回消息,它们在返回时更加随机排序。真的很喜欢某人发布正确的方式来检索按日期排序的邮件。这里复制的代码参照任何/所有愿意看看

function makeApiCall() { 
gapi.client.load('gmail', 'v1', function() { 
    //console.log('inside call: '+myquery); 
    var request = gapi.client.gmail.users.threads.list({ 
    'userId': 'me', 
    'q': myquery 
    }); 
    request.execute(function(resp) { 
     //$('.ASAP-emailhouse').append(message+'<br>'); 
    jQuery(document).ready(function($) { 
     var nummessages = resp.threads.length; 
      for (i = 0; i < resp.threads.length; i++) { 
       //$('.ASAP-emailhouse').append(resp.messages[i].id+'<br>'); 
       var threadId = resp.threads[i].id; 
       var messagerequest = gapi.client.gmail.users.threads.get({ 
        'userId': 'me', 
        'id': threadId 
        });//end var message request 
       messagerequest.execute(function(messageresp) { 
        for (m = 0; m < messageresp.messages.length; m++) { 
         //$('.ASAP-emailhouse').append(messageresp.messages[m].payload.headers.length+'<br>'); 
         for (n = 0; n < messageresp.messages[m].payload.headers.length; n++) { 
          //$('.ASAP-emailhouse').append(messageresp.messages[m].payload.headers[n].name+'<br>'); 
          if(messageresp.messages[m].payload.headers[n].name == 'Date'){ 
           $('.ASAP-emailhouse').append(messageresp.messages[m].payload.headers[n].value+'<br>'); 
          } 
         } 
        } 
       }); 
      }//end for each message 
     });//end jquery wrapper for wordpress 
    });//end request execute list messages 
});//end gapi client load gmail 

}

+0

我还集成了Gmail API,并可以确认线程和电子邮件以随机顺序返回。 – Devfly 2015-02-05 18:54:33

+0

耶!对我而言,开始并不疯狂 - 对于API以随机顺序返回而言并不那么好。所以我想我们必须做messages.list调用,通过那些制作messages.get调用,获取日期,将ID,Date放入一个新对象,重新排序,然后再使message.get再次调用。疯? – MegPhillips 2015-02-06 16:46:01

+1

您也可以使用搜索语法通过电子邮件过滤日期:https://support.google.com/mail/answer/7190?hl = zh_CN – Devfly 2015-02-06 22:06:15

0

我已经通过javascript库实现了新的gmail API。 users.messages:list方法的响应会返回为JSON对象,看起来是Date ASC顺序。在作为可选查询参数的一部分交付之前,我还没有在文档中找到任何对响应进行排序的方法。

1

线程始终按日期排序DESC,并且邮件始终按日期排序ASC。目前没有任何参数可以改变这一点。

+1

这似乎不再是真实的(至少对于消息)。我尝试过'messages.list' api,并且它返回按日期DESC排序的消息,或多或少。我说“或多或少”,因为当迭代消息并打印日期时,每隔一段时间后,一条消息就会被插入到打印的消息日期序列中。 – john2x 2016-11-17 08:57:55

+0

看起来线程按创建线程的日期排序,而不管收到线程中最近的消息的时间。 – 2017-07-03 15:38:50

0

来到这里,通过谷歌,因为我一直在寻找这个自己。

经过更多的挖掘,看起来messages.list根据historyId DESC返回消息。所以最后修改的消息在上面。

这也似乎在文档here第3点中说明:

合并更新到您的缓存的结果。您的应用程序应该将最近消息的历史标识(第一条消息存储在列表响应中)存储以供将来部分同步。

相关问题