尝试设置自定义字段值(API)时Asana错误请求

时间:2018-02-02 03:22:19

标签: python python-requests asana zapier asana-api

我正在尝试使用带有https://app.asana.com/api/1.0/tasks端点的Asana API创建新任务。我成功地在所需的项目中创建了一些测试任务。但是我现在正试图设置自定义字段的值,似乎正在遇到障碍。

我正在使用Python请求库。我有一种感觉,这是我格式化帖子的方式的问题。我检查了很多来源,包括这里,以及修改和修改我构造“选项”字典的方式。但它似乎没有帮助。

def postTaskToAsana(taskName, taskURL, taskCreated, taskCompleted, taskDue):

token = "<TOKEN>"
bearerToken = "Bearer " + token
header = {
    "Authorization" : bearerToken
    }

options = {
    "projects" : ["234234234"],
    "name" : "Hello, World!",
    "notes" : "How are you",
    "assignee" : "2342342342",
    "custom_fields" : { "234234234234" : "hello" }
    }

url = "https://app.asana.com/api/1.0/tasks"
r = requests.post(url, headers=header, data=options)
return r

如果我从上面的选项字典中删除“custom_fields”,那么post请求有效,我可以看到新创建的任务。我从上面的代码中得到的回复是:

  

{“errors”:[{“message”:“糟糕!处理此请求时发生意外错误。输入可能包含服务器不知道如何处理的内容。有关更多帮助,请联系api-support @ asana.com并在此回复中包含错误短语。“,”短语“:”9“}}}

this所述,目标是以此格式为请求生成JSON:

{
"data" : {
    "custom_fields" : { "2342342342" : "INFO" }
    }
}

据我所知,我的代码应该是什么。

对此有任何帮助都很棒,谢谢。

1 个答案:

答案 0 :(得分:2)

[解决]

怀疑这个问题与我格式化请求的方式有关。由于原因,我不清楚嵌套的custom_fields字典创建的附加级别是不是以正确的JSON格式格式化。我能够使用请求JSON参数来解决这个问题。

def postTaskToAsana(taskName, taskURL, taskCreated, taskCompleted, taskDue):

token = "<TOKEN>"
bearerToken = "Bearer " + token
header = {
    "Authorization" : bearerToken
    }

options = {
    "data" : {
        "projects" : ["123412341234"],
        "name" : "Review Task: " + taskName,
        "notes" : "Please review this task for where the process failed.\nTask: " + taskURL,
        "assignee" : "123412341234",
        "followers" : ["123412341234"],
        "custom_fields" : {
            "123412341234" : taskCreated,
            "123412342134" : taskDue,
            "123412341234" : taskCompleted
        }
    }
}

url = "https://app.asana.com/api/1.0/tasks"
r = requests.post(url, headers=header, json=options)
return r