2017-01-23 72 views
0

我正嘗試使用Python上的API訪問Gmail。我想要所有的UNREAD消息,只有從。然而使用多個標籤的Gmail API

GMAIL.users().messages().list(userId='me',labelIds='UNREAD').execute() 

,呼籲雙方labelIds不起作用:

我可以調用:

GMAIL.users().messages().list(userId='me',labelIds='INBOX').execute() 

或。有人可以幫助同時使用labelIds

TIA

+0

你是怎麼調用兩個labelIds的? – sailesh

+0

我嘗試了不同的方法。添加了一個逗號'(讀,收件箱)'和'labelIds =「未讀」,labelIds ='INBOX'' – chhibbz

+0

好吧,試試我剛剛發佈的解決方案,請接受它是否工作。 – sailesh

回答

1

labelIds可以是一個字符串,也可以是一個字符串的Python列表。

事情是這樣的:

GMAIL.users().messages().list(userId='me',labelIds=['UNREAD', 'INBOX']).execute() 

過濾類別,從初級只顯示郵件收件箱中的哪個是未讀。

GMAIL.users().messages().list(userId='me',labelIds=['UNREAD', 'INBOX'], q="category:primary").execute() 
+0

這裏是爲什麼:https://developers.google.com/resources/api-libraries/documentation/gmail/v1/python/latest/gmail_v1.users.messages.html#list – nickie

+0

是啊!你是對的! @nickie – sailesh

+0

這將返回收件箱中或未讀的郵件。 Grisha的答案是你想要採用的路線(用q來查詢)。 –

0

我希望所有的未讀消息,只能從收件箱。

UNREAD和不是真正的「標籤」。嘗試使用q參數代替:

GMAIL.users().messages().list(userId='me', q='in:inbox is:unread').execute() 
+1

這是正確的答案。 Gmail會在查詢參數之間假設AND,以便它將返回收件箱中未讀的郵件。請參閱https://support.google.com/mail/answer/7190。 –