Forum Discussion

Smallishbat's avatar
Smallishbat
Copper Contributor
Feb 18, 2026

Access to subAddress Property of Hyperlinks in Powerpoint Javascript API

Recently my company has me developing a Taskpane Add-in for Powerpoint using the Javascript API. Right now the API is still missing a 'subAddress' property for the Powerpoint.Hyperlink class. My heart's deepest longing is to add a slide to a presentation with existing slide-to-slide hyperlinks, check those hyperlinks for discrepancies between the slide ID and the text (ie: a Hyperlink reading '13' that now links to slide 14), and finally correct the text to the subaddress ID of the hyperlink in Javascript. It is my burning passion to do this for every hyperlink in my presentation with the push of a button. In the interest of all mankind I would ask that the 'subAddress' property of the hyperlinks be available for use in addition to the 'address' and 'screenTip' properties which now exist. To the microsoft dev who can grant me this boon I offer half my kingdom. Truly there is no dev more favoured than thee.

4 Replies

  • Sherlockbin's avatar
    Sherlockbin
    Copper Contributor

    We are running into a hard blocker with the current PowerPoint JavaScript API: there is no way to create, read, validate, or repair internal slide targets for hyperlinks. We can set address and screenTip, but we cannot set the equivalent of SubAddress, and we cannot produce the internal slide jump action that PowerPoint uses (ppaction://hlinksldjump backed by a relationship to a slide part). This is straightforward in VBA, and it is a core building block for any automated in-slide navigation.

     

    Our real-world use case is in-slide navigation bars for long client reports. Each tab should jump to another slide in the same deck. Decks are living documents, so slides are constantly inserted, deleted, and reordered. Without internal link target support, links drift silently over time and there is no safe way for our add-in to do “one button” validation and repair. Even if we do not need the links to function inside PowerPoint, we do need them to survive “Save As PDF” so the navigation works in the distributed PDF, and that still requires true internal targets when authoring the PPTX.

     

    As of now, we are considering a workaround that is objectively the wrong direction: download the PPTX from SharePoint, unzip the package, inject the a:hlinkClick actions and relationships ourselves, repackage it, then upload it back to the original location. That breaks normal authoring workflow and introduces serious operational risk. It effectively forces a “publish step” because we cannot safely overwrite a file that is being coauthored. Even a 20 to 30 second round trip can conflict with live edits and trigger refresh prompts, conflicts, or lost updates. It turns a simple user-initiated “refresh nav links” into a brittle external pipeline with locking, versioning, retries, and conflict handling. It is hard to support across teams because it requires governance and process discipline rather than letting the add-in update the deck in-session where coauthoring and AutoSave are designed to work.

     

    What we need is a first-class way to target slides internally from Office.js:

     

    • Add subAddress support for PowerPoint hyperlinks (read and write), or provide a dedicated internal target API like linkToSlide(slideId) or targetSlideId.
    • Support reading the internal target of existing links so we can validate and repair decks created from templates.
    • Prefer stable identifiers (slideId) over slide index or display text, since slide order changes frequently.
    • Ensure parity across Windows, Mac, and Web so a task pane add-in can be truly self-sufficient.

     

     

    This would unlock a large category of automation that PowerPoint users expect: agenda tabs, section navigation, template-driven cross-linking, hyperlink validation and repair, and reliable PDF-export navigation, without forcing VBA, VSTO, or risky Open XML rewrite workflows.

    • Smallishbat's avatar
      Smallishbat
      Copper Contributor

      Additionally, I've been working on a few hyperlink related issues regarding my project and the hyperlinks themselves are not always accessible in the Javascript API. For instance, a hyperlink made within a Powerpoint.Table can't be accessed without getting the owning Powerpoint.TableCell and then the TextRange inside it. But the only property access provided to that TextRange with the Javascript API is for the text within the TextRange. So you can't get the hyperlink as it is not stored in the text but in the level between the TableCell and the text. 

      Has your team encountered any issues of that nature?

  • The PowerPoint JavaScript API currently provides only a limited set of accessible properties for the PowerPoint.Hyperlink object, specifically address and screenTip. Unlike the VBA object model, which includes the subAddress property to reference internal slide targets or bookmarks, this functionality is not yet available in Office.js for PowerPoint.

     

    May consideirng workarounds below:

     

    • Use VBA or VSTO add-ins if you need immediate access to SubAddress.
    • For Office.js, you can only manipulate external links (address) and tooltips (screenTip).

     

     

    • Smallishbat's avatar
      Smallishbat
      Copper Contributor

      Thank you for the prompt response! I'm aware that the property doesn't exist. I am asking for an update to the object to include it. I want users in my company to be able to use my add-in as a self sufficient thing. I would prefer to avoid a scenario where my support app needs its own support app.