Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Update Confluence Table Inside Table Excerpt Using Python

Tola June 1, 2021

I can update a table on a confluence page using something like this:


from atlassian import Confluence
import pandas as pd

conf_site = 'https://your-domaine.com/'
conf_user = {username}
conf_pass = {password}

page_title = {pageTitle}
page_space = {pageSpace}
page_id = {pageID} 

# connect to Confluence
conf = Confluence(url=conf_site, username=conf_user, password=conf_pass)

# get current page content
page = conf.get_page_by_id(page_id, expand='body.view')
page_content = page['body']['view']['value']

#get table
table = pd.read_html(page_content)
table = table[0] #Only one table on the page

#add new column to table
table['D'] = ''

#convert table to HTML
newHTML = table.to_html(index=False)

#new page content
page_content = newHTML

# update page with new content
conf.update_page(page_id, page_title, page_content)

 

However, what do I do when I want to update a table inside a Table Excerpt?

I have tried to modify the entire page_content including <div> , classes etc. and send it back to confluence. However the table I end up with is no longer inside a Table Excert. 

Any suggestions how to do this? 

1 answer

1 accepted

2 votes
Answer accepted
Andrey Khaneev _StiltSoft_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 1, 2021

Hi @Tola,

Yes, it is possible to do. The only thing you need to change is the page body type from view to storage.

Pages are stored in the storage (XHTML) format in Confluence. It differs from what you see when viewing the page in a browser: links, macros, and other entities are stored in a different format. So when you update a page, you need to make updates in the storage format.

The first thing you need to change is this:

# get current page content
page = conf.get_page_by_id(page_id, expand='body.storage')
page_content = page['body']['storage']['value']

Then you need to work with XHTML, so you might need to parse it in a different way.

Tola June 11, 2021

XHTML instead of HTML did the trick. Thanks.

Like # people like this
Andrew Stitzel January 6, 2023

Can you please post what you did to convert the HTML to XHTML? I am currently trying to update values in a table on a Confluence page. 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events