背景
我的组织使用Asana平台来协调我们的工作。我一直在利用Asana的API来自动化我们的许多日常操作,并将Asana的平台与我们使用的其他外部服务集成在一起。我使用python和请求库与Asana的API进行交互,以进行GET,POST和PUT请求。
通常我需要在Asana中进行特定任务的GET或POST,我通常可以使用Asana的自动生成的任务ID来实现。
result = requests.get("https://app.asana.com/api/1.0/tasks/task_id", headers)
但是,有时候通过存储在其中的特定信息对我来说很有用。通过将有问题的特定信息存储在任务的元数据(Asana称为“外部数据”)中,我能够成功地做到这一点。
result = requests.get("https://app.asana.com/api/1.0/tasks/external_id", headers)
这两种方法都对我有用。但是,我在将特定数据存储在任务的外部数据中时遇到麻烦,我将在下面的部分中对此进行概述。
问题
当前,当我将元数据存储在任务外部数据中时,我的PUT / POST请求如下:
header = {
"Authorization" : "Bearer " + AUTH_TOKEN
}
data = {
"data" : {
"name" : "Burgers",
"external" : {
"id" : "external_id",
"data" : "data_value"
}
}
}
url = "https://app.asana.com/api/1.0/tasks/task_id"
result = requests.put(url, headers=header, json=data)
return result
这里要注意的重要一点是“ data_value”是一个字符串。但是,根据Asana的文档here,“ data_value”实际上可以存储键和值的字典。我试图通过执行以下操作来传递字典对象:
data = {
"data" : {
"name" : "Burgers",
"external" : {
"id" : "external_id",
"data" : {
"data_value" : "some_data",
"data_value_2" : "some_data"
}
}
}
}
但是我继续收到一条错误消息,指出:
“ {” errors“:[{” message“:” external:data:值不是字符串:[object Object]“,” help“:”有关API状态码及其处理方式的详细信息,阅读有关错误的文档:https://asana.com/developers/documentation/getting-started/errors“}]}”
有什么想法我要去哪里吗?有人成功吗?