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

时间:2014-10-19 03:11:38

标签: google-api gmail gmail-api google-api-nodejs-client

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

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalidArgument",
    "message": "Invalid request"
   }
  ],
  "code": 400,
  "message": "Invalid request"
 }
}

当我没有提供身份证时,标签创建没有问题。但是出于我的目的,我需要设置标准标签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();
    }
});

谢谢!

1 个答案:

答案 0 :(得分: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 );
    }
});

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