2016-07-27 132 views
3

我正在實現一個可以閱讀電子郵件的機器人,我正在關注Gmail API。我可以閱讀所有標籤,並將其存儲在列表中。我不能閱讀標籤Gmail API python實現

credentials = get_credentials() 
http = credentials.authorize(httplib2.Http()) 
service = discovery.build('gmail', 'v1', http=http) 
results = service.users().labels().get('me',"INBOX").execute() 
print (results.getName()) 

內部消息,我得到一個錯誤 -

results = service.users().labels().get('me',"INBOX").execute() 
TypeError: method() takes exactly 1 argument (3 given) 

官方的API文檔實現get label是在java中。 有人可以告訴我我做錯了什麼嗎?

SCOPES = 'https://www.googleapis.com/auth/gmail.readonly','https://mail.google.com/','https://www.googleapis.com/auth/gmail.modify','https://www.googleapis.com/auth/gmail.labels' 
+2

標籤和消息是分開的東西。您必須[列出訊息](https://developers.google.com/gmail/api/v1/reference/users/messages/list#examples),然後[讓他們](https://developers.google.com/gmail/api/v1/reference/users/messages/get#examples)。 – Tholle

+0

我的範圍是否正確申報? – CyberDuck

+0

順便說一句,官方文檔也可以在Python中獲得:https://developers.google.com/gmail/api/v1/reference/users/messages/list#python –

回答

2

我覺得這是你應該做的事情:

results = service.users().labels().list(userId='me').execute() 

從官方文檔: https://developers.google.com/gmail/api/quickstart/python

在進一步閱讀,這似乎是一個2階段過程。

首先,你需要抓住的郵件列表與查詢:

response = service.users().messages().list(userId=user_id, q=query, 
            pageToken=page_token).execute() 

然後你通過ID搶消息:

message = service.users().messages().get(userId=user_id, id=msg_id).execute() 
0

這裏的錯誤是,你正在使用的「獲取標籤的方法而不是消息。 get方法用於查找有關標籤的信息,例如該標籤內未讀消息的數量。

你可以上線見下面你所要求的.labels

results = service.users().labels().get('me',"INBOX").execute() 

你是正確的,這個例子是在Java中才會顯示。如果你想讓get(for labels)方法在python中工作,這裏是一個使用代碼的例子。

results = service.users().labels().get(userId='me',id='Label_15').execute()