使用python添加带有GMAIL API的标签

使用python添加带有GMAIL API的标签,python,api,gmail,Python,Api,Gmail,我在这里尝试使用gmail api添加标签 为此,我在这里使用了一个示例: 问题是,当我想贴上自己的标签时,我从服务器上得到了400英镑 def add_label_to_email(service, user_id, msg_id, msg_labels): """Modify the Labels on the given Message. Args: service: Authorized Gmail API service instance. user_id: User's email

我在这里尝试使用gmail api添加标签
为此,我在这里使用了一个示例:
问题是,当我想贴上自己的标签时,我从服务器上得到了400英镑

def add_label_to_email(service, user_id, msg_id, msg_labels):
"""Modify the Labels on the given Message.

Args:
service: Authorized Gmail API service instance.
user_id: User's email address. The special value "me"
can be used to indicate the authenticated user.
msg_id: The id of the message required.
msg_labels: The change in labels.

Returns:
Modified message, containing updated labelIds, id and threadId.
"""
try:
    message = service.users().messages().modify(userId=user_id,
                                                id=msg_id,
                                                body=msg_labels).execute()

    label_ids = message['labelIds']

    logging.debug('Message ID: %s - With Label IDs %s' % (msg_id, label_ids))
    return message
except errors.HttpError, error:
    logging.debug('An error occurred: %s' % error)


def create_message_label():
"""Create object to update labels.

Returns:
A label update object.
"""
return {'removeLabelIds': [], 'addLabelIds': ['my_label']}

错误消息:

DEBUG    2017-07-17 08:25:36,072 api_gmail.py:178] An error occurred: <HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/15d4e47f393487c2/modify?alt=json returned "Invalid label: my_label">

我不明白它是如何工作的,如果有人能帮忙的话?

这里的问题是labelId和labelName之间的混淆。传递给gmail api的labelId用户实际上是gmail标签字段名,而不是id

通过首先调用api请求所有标签,可以找到真正的标签ID:

labelsList = service.users().labels().list(userId='me').execute()
print(labelsList)
我认为labelslistvar是dict类型,为每个标签分配“id”和“name”。然后,可以通过使用更新的labelId调用api来使用上述代码


用户可能有一个不幸的巧合,即已经有一个id设置为“label_2”的标签。希望这对其他人有所帮助。

确切的错误消息是什么?如果以前没有创建标签,可能会给我带来错误?可能是这样,但是您说它与API文档中的示例一起工作,您的用户是否已经创建了“标签2”?
labelsList = service.users().labels().list(userId='me').execute()
print(labelsList)