How to get page id in Confluence programmatically?
Asked by Matti Kiviharju:

How to get page id in Confluence programmatically?


Answers:
author: George Lewe (Lewe)
body: Here is how I was able to resolve this:

```
import com.atlassian.confluence.core.ContentEntityObject;
import com.atlassian.confluence.content.render.xhtml.ConversionContext;
...

public class MyClass (...
   ...
   public String execute(...
      ContentEntityObject contentEntityObject = conversionContext.getEntity();
      System.out.println("pageId : " + contentEntityObject.getId());
      ...
   }
}
```

comments: author: Kafka On The Shore
body: Hi, George!

Could you show the whole code of page id execution, please?


author: George Lewe (Lewe)
body: Here is a template that might help:

```
public String execute(Map<String, String> map, String body, ConversionContext conversionContext) throws MacroExecutionException {

?? pageBuilderService.assembler().resources().requireWebResource("com.xxx.confluence.plugins.myplugin:webresources");
?? AttachmentManager attachmentManager = (AttachmentManager) ContainerManager.getComponent("attachmentManager");

?? //
?? // Get page ID
?? //
?? ContentEntityObject contentEntityObject = conversionContext.getEntity();
?? Long contentId = contentEntityObject.getId();
?? String pageId = contentId.toString();

?? //
?? // Get Base URL
?? //
?? BootstrapManager bootstrapManager = (BootstrapManager) ContainerManager.getComponent("bootstrapManager");
?? String baseUrl = bootstrapManager.getBaseUrl();

?? //
?? // Build output and return it
?? //???? ?
?? String output = "<p>Page ID: " + pageId + "</p><p>Base URL: " + baseUrl + "</p>";
?? return output;
}
```


author: Kafka On The Shore
body: George, thank you very much! you are my hero!


author: George Lewe (Lewe)
body: Hi Matti,

did you figure this one out? I have the same challenge, getting the page ID in a plugin macro. How can I retrieve it in the Java class file?

Best regards,  
George

Edit: Sorry, this should have been a reply to the first answer.


author: Nic Brough -Adaptavist-
body: The answer to that depends on where you are starting from! Imagine asking someone "how do I get to London?". When they don't know where you are now.

Where is your code running basically? A script? A user macro? A search result function? An add-on that's adding some form of interface (like the admin fuctions)? Another way to ask that is "in what context"?

comments: author: Matti Kiviharju
body: To the macro Java code:

```
<macro name='grid-user-timesheet' class='${project.groupId}.GridEditorUserMain' key='agile-application-stack-user'>        <description>Creates a editable Timesheet to Confluence Page.</description>        <resource type="velocity" name="help" location="templates/extra/editor/grideditoruser-help.vm">            <param name="help-section" value="advanced"/>        </resource>            </macro>
```


author: Nic Brough -Adaptavist-
body: So, this is an add-on for Confluence that provides a macro?

From memory, there should be a "context" variable, which gets an id via context.entity.id


author: Matti Kiviharju
body: Yes this is an Add-on for Confluence.


author: Matti Kiviharju
body: Can it get with this?

<https://docs.atlassian.com/confluence/5.8.4/com/atlassian/confluence/core/ContentEntityObject.html#getContentId-->


author: Nic Brough -Adaptavist-
body: That looks right to me. Not tested it, but it should do it.


Tags: developer