使用 Trello API 在卡片上设置自定义字段值
Setting custom field values on a card with the Trello API
我正在尝试使用 Trello API 的新自定义字段方法来设置卡片上自定义字段的值。
我创建了一个 number
类型的自定义字段。当我通过 id
对自定义字段发出 GET
请求时,它 returns 这个自定义字段对象:
{
"id":"5ab13cdb8acaabe576xxxxx",
"idModel":"54ccee71855b401132xxxxx",
"modelType":"board",
"fieldGroup":"837a643fd25acc835affc227xxxxxxxxxxxxxxxxxxxx",
"name":"Test Number Field",
"pos":16384,
"type":"number"
}
然后当我在 Trello UI 中创建一张新卡片时(但不要在 Test Number Field
框中输入值)然后 GET
使用 customFieldItems=true
(如记录here),它returns这个卡片对象(删除了不相关的字段):
{
"id": "5ab56e6b62abac194d9xxxxx",
"name": "test1",
"customFieldItems": []
}
请注意,由于我没有在 UI 的 Test Number Field
框中键入任何内容,因此 customFieldItems
属性 包含一个空数组。
然后,如果我在 UI 和 GET
卡片的 Test Number Field
框中再次输入数字 1
,它 returns 这个(不相关的字段已删除):
{
"id": "5ab56e6b62abac194d9xxxxx",
"name": "test1",
"customFieldItems":
[
{
"id": "5ab570c5b43ed17b2dxxxxx",
"value": {
"number": "1"
},
"idCustomField": "5ab13cdb8acaabe5764xxxxx",
"idModel": "5ab56e6b62abac194d9xxxxx",
"modelType": "card"
}
]
}
我希望能够通过 API 设置此自定义字段的值。
当我转到 API 文档以了解 “设置、更新和删除卡片上自定义字段的值”时,(here) 我插入以下信息:
查询授权
key
:(我们的 valid/working Trello API 键)
token
:(我们的 valid/working Trello API 令牌)
路径参数
idCard
:(自定义字段值应为 set/updated 的卡片 ID) 5ab56e6b62abac194d9xxxxx
idCustomField
(卡片上自定义字段的 ID。):5ab570c5b43ed17b2dxxxxx
查询参数
idCustomField
(项目所属自定义字段的 ID。):5ab13cdb8acaabe576xxxxx
modelType
(这应该总是卡。): card
value
(包含要为卡片的自定义字段值设置的键和值的对象。用于设置值的键应与自定义类型匹配字段已定义。): {"number": 2}
当我点击 Try It 时,我得到了响应:400 Bad Request "Invalid custom field item value."
我试过以下方法:
切换两个 idCustomField
值(令人困惑的是路径参数和查询参数具有相同的名称,暗示它们应该接受相同的值,但随后它们有描述不同,描述为vague/confusing).
将两个 idCustomField
值设置为相同的值(对于两个可能的 ID)
将值设置为 2
、{"number": "2"}
、{number: 2}
、{number: "2"}
等。
无论我尝试什么,我总是得到 "Invalid custom field item value."
无论卡片在自定义字段中是否有值,这都以相同的方式表现。
我很确定路径参数中的 idCustomField
被接受了,因为当我更改一个字符时,它反而给我这个错误:"invalid value for idCustomField"
.
所以我不知道 "Invalid custom field item value."
是指查询参数 idCustomField*
还是 value
.
我也不知道卡片在自定义字段中是否具有现有值是否会有所不同,但我希望能够设置此自定义字段的值,无论它是否存在当前在该字段中有一个值。
the Trello documentation page 上的实例(使用 XMLHttpRequest
)是错误的。您应该使用 fetch
.
来使用下一个示例
var url = "https://api.trello.com/1/cards/{idCard}/customField/{idCustomField}/item?token={yourToken}&key={yourKey}";
var data = {value: { number: "42" }};
fetch(url, { body: JSON.stringify(data), method: 'PUT', headers: {'content-type': 'application/json'}})
.then((resp) => resp.json())
.then((data) => console.log(JSON.stringify(data, null, 2)))
.catch((err) => console.log(JSON.stringify(err, null, 2)))
这个例子有效。在尝试之后,我修改了 XMLHttpRequest
版本并且它也有效。
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
data = {value: { number: "3" }}; //added
var json = JSON.stringify(data); //added
xhr.open("PUT", 'https://api.trello.com/1/cards/{idCard}/customField/{idCustomField}/item?key={yourkey}&token={yourtoken}');
xhr.setRequestHeader('Content-type','application/json'); //added
xhr.send(json); //modified
重点是您应该 1) 将请求 Content-type
header 设置为 application/json
和 2) 通过 JSON object body.
我试图编辑文档中的实时示例,但我不可能。我希望他们能尽快修复它。
我正在尝试使用 Trello API 的新自定义字段方法来设置卡片上自定义字段的值。
我创建了一个 number
类型的自定义字段。当我通过 id
对自定义字段发出 GET
请求时,它 returns 这个自定义字段对象:
{
"id":"5ab13cdb8acaabe576xxxxx",
"idModel":"54ccee71855b401132xxxxx",
"modelType":"board",
"fieldGroup":"837a643fd25acc835affc227xxxxxxxxxxxxxxxxxxxx",
"name":"Test Number Field",
"pos":16384,
"type":"number"
}
然后当我在 Trello UI 中创建一张新卡片时(但不要在 Test Number Field
框中输入值)然后 GET
使用 customFieldItems=true
(如记录here),它returns这个卡片对象(删除了不相关的字段):
{
"id": "5ab56e6b62abac194d9xxxxx",
"name": "test1",
"customFieldItems": []
}
请注意,由于我没有在 UI 的 Test Number Field
框中键入任何内容,因此 customFieldItems
属性 包含一个空数组。
然后,如果我在 UI 和 GET
卡片的 Test Number Field
框中再次输入数字 1
,它 returns 这个(不相关的字段已删除):
{
"id": "5ab56e6b62abac194d9xxxxx",
"name": "test1",
"customFieldItems":
[
{
"id": "5ab570c5b43ed17b2dxxxxx",
"value": {
"number": "1"
},
"idCustomField": "5ab13cdb8acaabe5764xxxxx",
"idModel": "5ab56e6b62abac194d9xxxxx",
"modelType": "card"
}
]
}
我希望能够通过 API 设置此自定义字段的值。
当我转到 API 文档以了解 “设置、更新和删除卡片上自定义字段的值”时,(here) 我插入以下信息:
查询授权
key
:(我们的 valid/working Trello API 键)token
:(我们的 valid/working Trello API 令牌)
路径参数
idCard
:(自定义字段值应为 set/updated 的卡片 ID)5ab56e6b62abac194d9xxxxx
idCustomField
(卡片上自定义字段的 ID。):5ab570c5b43ed17b2dxxxxx
查询参数
idCustomField
(项目所属自定义字段的 ID。):5ab13cdb8acaabe576xxxxx
modelType
(这应该总是卡。):card
value
(包含要为卡片的自定义字段值设置的键和值的对象。用于设置值的键应与自定义类型匹配字段已定义。):{"number": 2}
当我点击 Try It 时,我得到了响应:400 Bad Request "Invalid custom field item value."
我试过以下方法:
切换两个
idCustomField
值(令人困惑的是路径参数和查询参数具有相同的名称,暗示它们应该接受相同的值,但随后它们有描述不同,描述为vague/confusing).将两个
idCustomField
值设置为相同的值(对于两个可能的 ID)将值设置为
2
、{"number": "2"}
、{number: 2}
、{number: "2"}
等。
无论我尝试什么,我总是得到 "Invalid custom field item value."
无论卡片在自定义字段中是否有值,这都以相同的方式表现。
我很确定路径参数中的 idCustomField
被接受了,因为当我更改一个字符时,它反而给我这个错误:"invalid value for idCustomField"
.
所以我不知道 "Invalid custom field item value."
是指查询参数 idCustomField*
还是 value
.
我也不知道卡片在自定义字段中是否具有现有值是否会有所不同,但我希望能够设置此自定义字段的值,无论它是否存在当前在该字段中有一个值。
the Trello documentation page 上的实例(使用 XMLHttpRequest
)是错误的。您应该使用 fetch
.
var url = "https://api.trello.com/1/cards/{idCard}/customField/{idCustomField}/item?token={yourToken}&key={yourKey}";
var data = {value: { number: "42" }};
fetch(url, { body: JSON.stringify(data), method: 'PUT', headers: {'content-type': 'application/json'}})
.then((resp) => resp.json())
.then((data) => console.log(JSON.stringify(data, null, 2)))
.catch((err) => console.log(JSON.stringify(err, null, 2)))
这个例子有效。在尝试之后,我修改了 XMLHttpRequest
版本并且它也有效。
var data = null;
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
data = {value: { number: "3" }}; //added
var json = JSON.stringify(data); //added
xhr.open("PUT", 'https://api.trello.com/1/cards/{idCard}/customField/{idCustomField}/item?key={yourkey}&token={yourtoken}');
xhr.setRequestHeader('Content-type','application/json'); //added
xhr.send(json); //modified
重点是您应该 1) 将请求 Content-type
header 设置为 application/json
和 2) 通过 JSON object body.
我试图编辑文档中的实时示例,但我不可能。我希望他们能尽快修复它。