我正在尝试通过PUT请求删除asana任务上的自定义字段的值。
基于我发送的原始json数据来创建具有自定义字段值的任务the documentation here这是我对此应该如何看的最佳猜测:
let data = {custom_fields: { ASANA_CUSTOM_FIELD_ID_NUMBER: null }}; //struggling here
updateTask(ASANA_TASK_ID_NUMBER, data);
function updateTask(id, data) {
return put(`https://app.asana.com/api/1.0/tasks/${ASANA_TASK_ID_NUMBER}`, data);
}
function put(url, data) {
return makeRequest({
"url": url,
"headers": {"Authorization": "Bearer " + accessCode()},
"type": "PUT",
"data": data
})
}
但我收到错误:
status:400 Bad request
custom_fields: Value cannot be an array: []
除了我已经尝试过的所有格式之外,这似乎都足以解决了,而且我没有运气解决它。我知道put函数可以很好地更新任务的其他字段,并且我看到与null之外的实际数字相同的错误。
答案 0 :(得分:0)
您需要使用JSON而不是urlencoded数据发送内容。在我看来,这是Asana API中的一个小错误。他们说他们支持表单编码的内容,但是当你尝试发送一个对象时它不喜欢它,因为它认为它是一个数组。
答案 1 :(得分:0)
我不确定原因,但设置自定义字段似乎与其他API请求不同。
以下是一些适用于设置的代码,您可以弄清楚如何将其应用于您正在使用的任何语言:
function SetCustomField(taskId, fieldId, value) {
// not sure why, but to set the custom task you have to tell it your content type is json,
// then send json as a string instead of letting it serialize it for you
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer API-KEY'
};
var formData = '{"data": { "custom_fields": { "' + fieldId + '": ' + value + '} } }';
var options = {
'method': 'put',
'headers': headers,
'payload': formData
};
var response = UrlFetchApp.fetch('https://app.asana.com/api/1.0/tasks/' + taskId, options);
//Logger.log(response.getContentText());
}