在asana API中使用Python更新custom_fields



我一直在尝试根据Asana的API的最新版本更新custom_fields,与本文非常相似,但使用API的更高版本(例如,我需要使用update_task方法(。我可以在任务的顶层更新字段,但事实证明,custom_fields对象更难更新。例如,我有许多自定义字段,并且正在尝试更新一个名为"的测试字段;更新";并且仅将text_ value设置为"0";你好"。。。

import asana
asanaPAT = 'myToken'
client = asana.Client.access_token(asanaPAT)
result = client.tasks.get_tasks({'project': 'myProjectID'}, opt_pretty=True)#, iterator_type=None)    
for index, result in enumerate(result):
complete_task = client.tasks.find_by_id(result["gid"])

task_name = complete_task['name'] 
task_id = complete_task['gid']
custom_fields = complete_task['custom_fields']

#I can easily update top-level fields like 'name' and 'completed'...
#result = client.tasks.update_task(task_id, {'name': task_name + '(new)'}, opt_pretty=True)
#result = client.tasks.update_task(task_id, {'completed': False}, opt_pretty=True)
for custom_fieldsRow in custom_fields:
if custom_fieldsRow['name'] == "Updated":
#custom_fieldsRow['text_value'] = 'Hello'
#finished loop through individual custom fields, so update on the level of the task...
#client.tasks.update_task(task_id, {custom_fields}, opt_pretty=True)

manualCustomField = {'data': { 'custom_fields': {'gid': 'theGIDOfCustomField', 'text_value': 'Hello'} }} 
resultFromUpdate = client.tasks.update_task(task_id, manualCustomField, opt_pretty=True)

正如您在上面看到的,我开始尝试循环使用custom_fields,并在稍后更新之前对特定字段进行更改。但现在我甚至尝试手动设置custom_field数据(我代码的最后一行(,但它什么也没做(没有错误,但不会改变我的任务(。我完全没有解决这个问题的想法,所以感谢任何关于我哪里出了问题的反馈。

抱歉,我想错了,我只需要读倒数第二行。。。

manualCustomField = { 'custom_fields': {'theGIDOfCustomField':'Hello'} } 

如果你问我的话,在API中这样做有点奇怪(没有特别说明你将更新哪个字段或你正在使用哪个id(,但现在它终于起作用了。

最新更新