Action

Post to Confluence

Posted by Alessandro Melandri, Last update 22 days ago

UPDATES

22 days ago

Moved login informations (host, username and api token) to Drafts Credentials

show all updates...

22 days ago

Moved login informations (host, username and api token) to Drafts Credentials

8 months ago

Removed settings from the script code

This action allows you to publish a draft to Confluence Cloud.

Draft will be converted to HTML before publishing, so you’ll get a nicely formatted Confluence page.

Settings instructions:

On first run, the action will prompt for authentication infos and save them to Draft credentials

  • Atlassian_SpaceId: The space ID is NOT your space key. To get the space id, visit this URL while logged in: https://MYCOMPANY.atlassian.net/wiki/rest/api/space/SPACE_KEY
  • Atlassian_ParentPage: Parent page id for the new page

Steps

  • defineTemplateTag

    name
    Atlassian_SpaceId
    template
  • defineTemplateTag

    name
    Atlassian_ParentPage
    template
  • script

    // ----- Confluence API endpoint and authentication
    
    let credential = Credential.createWithHostUsernamePassword("ConfluenceCloud", "Confluence credentials");
    credential.addTextField("host", "Confluence Domain");
    credential.addTextField("username", "Confluence Username");
    credential.addPasswordField("password", "Confluence API Token");
    credential.authorize();
    
    // ------------------------------------------------------------------
    
    var spaceId    = draft.processTemplate("[[Atlassian_SpaceId]]");
    var parentPage = draft.processTemplate("[[Atlassian_ParentPage]]");
    
    // ------------------------------------------------------------------
    
    
    var apiUrl = "https://" + credential.getValue("host") + "/wiki/api/v2/pages";
    
    var authorizationToken = "Basic " + Base64.encode(credential.getValue("username") + ":" + credential.getValue("password"))
    
    
    // Get the note content from the current draft
    
    var noteTitle = draft.displayTitle
    var noteContent = draft.processTemplate("[[trimmed_body]]")
    
    var mmd = MultiMarkdown.create();
    mmd.format = "html";
    mmd.criticMarkup = true;
    var noteContentHtml = mmd.render(noteContent);
    
    var payload = {
      "spaceId": spaceId,
      "status": "current",
      "title": noteTitle,
      "parentId": parentPage,
      "body": {
        "representation": "storage",
        "value": noteContentHtml
      }
    };
    
    var http = HTTP.create();
    
    var response = http.request({
        "url": apiUrl,
        "method": "POST",
        "encoding": "json",
        "data": payload,
        "headers": {
            "Authorization": authorizationToken,
            "Content-Type": "application/json",
            "Accept": "application/json"
        }
    });
    
    // Process the response
    
    if (response.success) {
    	app.displaySuccessMessage("Note published to Confluence")
    } else {
    	app.displayErrorMessage(JSON.parse(response.responseText).errors[0].title)
    }
    

Options

  • After Success Default
    Notification None
    Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.