Обновите custom_fields с помощью Python в asana API

Я пытался обновить custom_fields в соответствии с последней версией API Asana, очень похоже на это сообщение, но с более поздней версией API (например, мне нужно использовать метод update_task). Я могу обновлять поля на верхнем уровне задачи, но объект custom_fields обновить гораздо сложнее. Например, у меня есть много настраиваемых полей, и я пытаюсь обновить тестовое поле с именем «Обновить» и просто установить для text_value значение Hello...

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 (последняя строка моего кода), но это ничего не делает (нет ошибки, но не меняет мою задачу). У меня совершенно нет идей по устранению неполадок, поэтому ценю любые отзывы о том, где я ошибаюсь.


person d3wannabe    schedule 12.08.2020    source источник


Ответы (1)


Извините, я понял свою ошибку, мне просто нужно было прочитать предпоследнюю строчку...

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

Довольно странный способ сделать это в API (конкретно не указывая, какое поле вы будете обновлять или какой идентификатор вы используете), если вы спросите меня, но теперь это, наконец, работает.

person d3wannabe    schedule 12.08.2020