GMAIL API没有';不接受大多数查询(GAE Python)
我正在尝试使用Python上的Google应用程序引擎获取过去3个月内发送的所有消息。出于某种原因,尽管它不接受我输入的大多数查询。它返回一个简单字符串的结果,但如果我输入“after:2015/01/20”或“New_than:3m”之类的内容,则会出现以下错误:GMAIL API没有';不接受大多数查询(GAE Python),python,google-app-engine,gmail-api,Python,Google App Engine,Gmail Api,我正在尝试使用Python上的Google应用程序引擎获取过去3个月内发送的所有消息。出于某种原因,尽管它不接受我输入的大多数查询。它返回一个简单字符串的结果,但如果我输入“after:2015/01/20”或“New_than:3m”之类的内容,则会出现以下错误: AttributeError: 'Resource' object has no attribute 'messages' 我不知道这是从哪里来的。我当前的请求代码是: import webapp2, httplib2 from
AttributeError: 'Resource' object has no attribute 'messages'
我不知道这是从哪里来的。我当前的请求代码是:
import webapp2, httplib2
from dateutil.relativedelta import *
from oauth2client.appengine import OAuth2Decorator
from apiclient import discovery, errors
from oauth2client import client
from google.appengine.api import memcache
http = httplib2.Http(memcache)
service = discovery.build("gmail", "v1", http=http)
decorator = OAuth2Decorator(client_id=settings.CLIENT_ID,
client_secret=settings.CLIENT_SECRET,
scope=settings.SCOPE)
class retrieveMessages(webapp2.RequestHandler):
@decorator.oauth_required
def get(self):
try:
user = 'someone@gmail.com'
after = (datetime.datetime.now()+relativedelta(months=-3)).strftime("%Y/%m/%d")
query = 'after:'+after
http = decorator.http()
response = service.users().messages().list(userId=user, labelIds='SENT', q=query, maxResults=1000).execute(http=http)
messages = []
if 'messages' in response:
messages.extend(response['messages'])
while 'nextPageToken' in response:
page_token = response['nextPageToken']
response = service.users().messages().list(userId=user, labelIds='SENT', q=query, pageToken=page_token).executehttp=http(http=http)
messages.extend(response['messages'])
return messages
except errors.HttpError, error:
print 'An error occurred: %s' % error
if error.resp.status == 401:
# Credentials have been revoked.
# TODO: Redirect the user to the authorization URL.
raise NotImplementedError()
这段代码不应该在while循环中:
response = service.messages()...
是
我想。问题是错误是什么…第二个messages().list()调用只是“service.messages().list()”而不是“service.users().messages().list()。我在这里使用了Google示例,在这种情况下包含相同的错误:嘿,奇怪,我猜这也是Google文档中的一个错误!结果是我在第二个execute()中也缺少了“http=http”.我已经更新了上面的代码。现在可以正常工作了,谢谢!
response = service.users().messages()...