英文:
Google-api-go-client: listing messages w/ label and fetching header fields
问题
我想列出具有特定标签的消息。所以我使用了谷歌的Go快速入门代码,并将范围设置为gmail.MailGoogleComScope。
使用以下代码可以正常获取具有标签"INBOX"的所有消息:
mes, err := srv.Users.Messages.List(user).LabelIds("INBOX").Do()
但是,当我将"INBOX"替换为"TEST"时,我会收到错误消息:
无法检索消息。googleapi: 错误 400: 无效的标签: TEST,invalidArgument 退出状态 1
而且确实存在一个名为TEST的标签。我做错了什么?
英文:
I want to list messages with a specific label. So I used the Go Quickstart code from google and set the scope to gmail.MailGoogleComScope.
Getting a list of all messages with label "INBOX" works fine using this code
mes, err := srv.Users.Messages.List(user).LabelIds("INBOX").Do()
but when I replace "INBOX" with "TEST" I get the error:
> nable to retrieve Messages. googleapi: Error 400: Invalid label: TEST,
> invalidArgument exit status 1
and there is a label with name TEST. What am I doing wrong?
答案1
得分: 6
“INBOX”的标签名称和ID是相同的。但是,有一种情况可以区分标签名称和标签ID。您有两种方法可以检索标签的消息列表。以下脚本假设使用了谷歌的Go Quickstart。
1. 检查标签ID并检索消息列表
检索标签名称和ID:
mes, err := srv.Users.Labels.List(user).Do()
if err != nil {
log.Fatalf("Error: %v", err)
}
for _, e := range mes.Labels {
fmt.Println(e.Name + ", " + e.Id)
}
使用labelID
检索消息列表:
mes, err := srv.Users.Messages.List(user).LabelIds(labelID).Do()
if err != nil {
log.Fatalf("Error: %v", err)
}
for _, e := range mes.Messages {
fmt.Println(e.Id)
}
2. 使用“Q”检索消息列表
mes, err := srv.Users.Messages.List(user).Q("label:labelname").Do()
if err != nil {
log.Fatalf("Error: %v", err)
}
for _, e := range mes.Messages {
fmt.Println(e.Id)
}
这可以直接检索标签名称的消息列表。参数“Q”的用法与Gmail搜索框相同。
参考资料:
-
Users.messages: list https://developers.google.com/gmail/api/v1/reference/users/messages/list
-
Users.labels: list https://developers.google.com/gmail/api/v1/reference/users/labels/list
英文:
The label name and ID of "INBOX" are the same. But, there is a case to differ between the label name and label ID. You have 2 methods for retrieving message list of the label. Following scripts suppose the use of Go Quickstart from google.
1. Check label IDs and retrieve message list
Retrieve label names and IDs :
mes, err := srv.Users.Labels.List(user).Do()
if err != nil {
log.Fatalf("Error: %v", err)
}
for _, e := range mes.Labels {
fmt.Println(e.Name + ", " + e.Id)
}
Retrieve message list using labelID
:
mes, err := srv.Users.Messages.List(user).LabelIds(labelID).Do()
if err != nil {
log.Fatalf("Error: %v", err)
}
for _, e := range mes.Messages {
fmt.Println(e.Id)
}
2. Retrieve message list using "Q"
mes, err := srv.Users.Messages.List(user).Q("label:labelname").Do()
if err != nil {
log.Fatalf("Error: %v", err)
}
for _, e := range mes.Messages {
fmt.Println(e.Id)
}
This can be directly retrieved a message list for the label name. Parameters of "Q" are the same to the Gmail search box.
References :
-
Users.messages: list https://developers.google.com/gmail/api/v1/reference/users/messages/list
-
Users.labels: list https://developers.google.com/gmail/api/v1/reference/users/labels/list
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论