通过Google Gmail API创建包含ID的标签

ewe*_*ein 0 gmail google-api google-api-nodejs-client gmail-api

我正在尝试使用Gmail API的节点库创建一个带有自定义ID的标签.API有一个用于设置自己的id的请求参数,但是当我尝试创建标签时,我得到错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalidArgument",
    "message": "Invalid request"
   }
  ],
  "code": 400,
  "message": "Invalid request"
 }
}
Run Code Online (Sandbox Code Playgroud)

当我不给id时,标签创建没有问题.但是出于我的目的,我需要设置标准标签ID.任何人都知道这里发生了什么,或者它只是api的错误/错误?您可以尝试为自己的帐户创建自己的标签,并在此处查看我正在讨论的更多信息:https://developers.google.com/apis-explorer/#p/gmail/v1/gmail.users.labels.create

创建标签的代码:

var service = Google.gmail({version : 'v1', auth : oauth2Client});
service.users.labels.create({
    userId : 'user address here',
    labelListVisibility   : 'labelShow',
    messageListVisibility : 'show',
    name : 'label name here',
    id   : 'label id here'
}, function (err) {
    if (err) {
        throw err;
    } else {
       callback();
    }
});
Run Code Online (Sandbox Code Playgroud)

谢谢!

Pri*_*ner 5

您说"API有一个用于设置您自己的ID的请求参数",但https://developers.google.com/gmail/api/v1/reference/users/labels/create中的文档未显示任何此类字段users.labels.create端点的一部分.

如果您查看https://developers.google.com/gmail/api/v1/reference/users/labels,您会看到一个不可变的id字段,但这不可写,因此该值的值由系统而不是你.

该文档users.labels.create还指示将返回完全填充的Users对象,因此您将能够知道刚刚创建的标签的ID.要使用node.js库执行此操作,请将回调函数设置为具有第二个参数,该参数将包含调用的结果.所以它可能看起来像这样:


var service = Google.gmail({version : 'v1', auth : oauth2Client});
service.users.labels.create({
    userId : 'user address here',
    labelListVisibility   : 'labelShow',
    messageListVisibility : 'show',
    name : 'label name here'
}, function (err, result) {
    if (err) {
        throw err;
    } else {
       console.log( result );
       callback( result );
    }
});
Run Code Online (Sandbox Code Playgroud)

如评论中所述,您还可以使用users.labels.list获取此用户的完整标签列表.

  • 如果您转到此链接:https://developers.google.com/apis-explorer/#p/gmail/v1/gmail.users.labels.create 并单击请求正文,它显示“添加属性”和id 字段列在那里。如果你不能写入它为什么有这个选项?我认为一旦启动它就是不可变的,否则在不知道标签 ID 的情况下,它们几乎毫无用处。 (2认同)