Office365-rest-python-client: Como atualizar um único item da lista?

Criado em 10 mai. 2018  ·  4Comentários  ·  Fonte: vgrem/Office365-REST-Python-Client

Estou usando o método de atualização de listitem.py do SharePoint
item_object.update ()
mas como posso colocar os dados que desejo atualizar? por exemplo:
item_properties = {'__metadata': {'type': 'SP.Data.' + listTitle + 'ListItem'},
'Título': 'novo item',
'Valor': 99,
}
e, em seguida, atualize o item ...

question

Comentários muito úteis

O exemplo anterior não funciona para mim - obteve código de resposta 204 sem atualização real.
O caminho certo - defina as propriedades do objeto através do método:

# Open list object from portal
ctx_auth = AuthenticationContext(url=sharepoint_site_url)
ctx = ClientContext(sharepoint_site_url, ctx_auth)
target_list = ctx.web.lists.get_by_title(sharepoint_root_folder_name)

# Fetch list item object by id and set it's properties
item = target_list.get_item_by_id(item_id)
item.set_property('Title', 'new-title')
item.set_property('NewItem', '99')

# Update list item object and send request back to portal
item.update()
ctx.execute_query()

Todos 4 comentários

Se bem entendi, você deseja atualizar um objeto já sincronizado com o Sharepoint. Veja como eu consegui:

    ctx_auth = AuthenticationContext(url=sharepoint_site_url)
    ctx = ClientContext(sharepoint_site_url, ctx_auth)
    target_list = ctx.web.lists.get_by_title(sharepoint_root_folder_name)

    # Fetch item by id and add properties to it.
    item = target_list.get_item_by_id(item_id)
    item.properties.update({
        "NewItem": "99"
    })
    item.update()
    ctx.execute_query()

O exemplo anterior não funciona para mim - obteve código de resposta 204 sem atualização real.
O caminho certo - defina as propriedades do objeto através do método:

# Open list object from portal
ctx_auth = AuthenticationContext(url=sharepoint_site_url)
ctx = ClientContext(sharepoint_site_url, ctx_auth)
target_list = ctx.web.lists.get_by_title(sharepoint_root_folder_name)

# Fetch list item object by id and set it's properties
item = target_list.get_item_by_id(item_id)
item.set_property('Title', 'new-title')
item.set_property('NewItem', '99')

# Update list item object and send request back to portal
item.update()
ctx.execute_query()

Resolvido com # 146

Obrigado por esses exemplos!
Proponho fechá-lo já que foi resolvido.

Esta página foi útil?
0 / 5 - 0 avaliações