Skip to content Skip to sidebar Skip to footer

Updating A Custom Field Using Asana Python Api

I'm trying to update the values of custom fields in my Asana list. I'm using the Official Python client library for the Asana API v1. My code currently looks like this; project = '

Solution 1:

I think the problem is that our API is not symmetrical with respect to custom fields... which I kind of find to be a bummer; it can be a real gotcha in cases like this. Rather than being able to set the value of a custom field within the block of values as you're doing above, which is intuitive, you have to set them with a key:value dictionary-like setup of custom_field_id:new_value - not as intuitive, unfortunately. So above, where you have

for custom_field in task['custom_fields']:
  custom_field['text_value'] = "New Data!"

I think you'd have to do something like this:

new_custom_fields = {}
forcustom_fieldin task['custom_fields']:
  new_custom_fields[custom_field['id']] = "New Data!"
task['custom_fields'] = new_custom_fields

The goal is to generate JSON for the POST request that looks something like

{"data":{"custom_fields":{"12345678":"New Data!"}}}

As a further note, the value should be the new text string if you have a text custom field, a number if it's a number custom field, and the ID of the enum_options choice (take a look at the third example under this header on our documentation site) if it's an enum custom field.

Solution 2:

Thanks to Matt, I got to the solution.

new_custom_fields = {}
for custom_field in task['custom_fields']:
  new_custom_fields[custom_field['id']] = "New Data!"print client.tasks.update(task['id'], {'custom_fields':new_custom_fields})

There were two problems in my original code, the first was that I was trying to treat the API symmetrically and this was identified and solved by Matt. The second was that I was trying to update in an incorrect format. Note the difference between client.tasks.update in my original and updated code.

Post a Comment for "Updating A Custom Field Using Asana Python Api"