Access content of a table from user macro
Asked by Michal Michal:

Hi, I would like to create an user macro which gets content from a table. The table is on a different page from the one where the user macro i placed.

Is it possible to access content of a table on another page from an user macro?

My final goal is to create an user macro which lists all incoming links, but only those which are placed in a specific table on other pages.


Answers:
author: Michal Michal
body: Sorry, got it working now :-)


author: Michal Michal
body: Well, I try to get the content of a page but I keep getting 404 page not found error.

function getContent()  
{  
jQuery.ajax({  
url: "/rest/api/content/77562249",  
type: 'get',  
dataType: 'html',  
async: false,  
success: function(data) {  
var h = document.createElement("H1");   
var t = document.createTextNode(data);  
h.appendChild(t);  
document.getElementById("div1").appendChild(h);  
},  
error: function (xhr, ajaxOptions, thrownError) {  
var h = document.createElement("H1");  
var t = document.createTextNode(xhr.status + " " + thrownError);  
h.appendChild(t);  
document.getElementById("div1").appendChild(h);  
}  
});  
return;  
}

/rest/api/content/77562249 works in a browser, but not in the user macro

/rest/api/space works both in macro and in browser


author: Michal Michal
body: I too think that I should go for JavaScript. Selecting a page is not an issue. I will use the incoming links.


author: Davin Studer
body: My first thought would be that you could create a user macro with a parameter to select a page. That parameter will create a velocity variable that you could pop into some JavaScript to do a REST call to get the contents of the page. From there it would be parsing through the page storage format with JavaScript.

I would tend to use JavaScript for this in a user macro instead of velocity. It's actually not too hard to get the page content with velocity, but since velocity is really only a page templating language there aren't very good/easy ways to parse though the page storage format with it.


author: Andrej Freeze _ greenique
body: Sorry to hear that this did not help you. In case the content is within a single cell of the table, or consists of the whole table, you could also use the [excerpt macro](https://confluence.atlassian.com/doc/excerpt-macro-148062.html). But this seems to be far less than what you are trying to achieve.

Having the page properties macro as a base, you could create a user macro that does exactly that, but maybe someone else will have a better idea ?


author: Michal Michal
body: Thanks, I know the Page Properties Macro and this is not what I want to do.

I want to extract content of a specific table (or part of a table) and use that content in a user macro.


author: Andrej Freeze _ greenique
body: Hello [@Michal Michal](/t5/user/viewprofilepage/user-id/1289854)

have you wrapped the table in a Page Properties Macro? Doing so, allows you to create a Page Property Report. Here you can define a label, and receive results of the table in a centralized list, showing only entry types you defined.

For more information take a look at the official documentation of the [page properties macro](https://confluence.atlassian.com/doc/page-properties-macro-184550024.html)and the [page properties report](https://confluence.atlassian.com/doc/page-properties-report-macro-186089616.html)

Cheers,

Andrej


Tags: confluence-server

incoming-link

server

user-macro