PowerPoint JavaScript API: presentation.customXmlParts doesn't return the SharePoint document properties part (works in Word and Excel)

Andreas Davros 121 Reputation points
2026-11-02T08:46:42.26+00:00

We have an Office task pane add-in that updates SharePoint library column values for the open document. It writes them into the SharePoint document properties custom XML part (root namespace http://schemas.microsoft.com/office/2006/metadata/properties, element documentManagement), and SharePoint copies them into the columns when the file is saved. This works in Word (document.customXmlParts, WordApi 1.4) and Excel (workbook.customXmlParts, ExcelApi 1.5).

In PowerPoint, presentation.customXmlParts (PowerPointApi 1.7) returns no parts for a presentation stored in the same library, although the file contains them.

If we add <p:custDataLst><p:custData r:id="rIdN"/></p:custDataLst> to ppt/presentation.xml, pointing at the existing relationship to the properties part, PowerPoint returns that part from presentation.customXmlParts. getXml and setXml then work, and SharePoint copies the values into the columns on save. So PowerPoint appears to expose only custom XML parts referenced from p:custDataLst, and SharePoint doesn't reference its properties part there.

  1. Is it by design that PowerPoint.Presentation.customXmlParts only includes parts referenced from p:custDataLst? Is this documented anywhere?
  2. Is there a supported way for a PowerPoint add-in to read and update the SharePoint document properties part, or the library column values, for the open presentation?
  3. If not, is support planned, for example listing all package-level custom XML parts as Word and Excel do?
Microsoft 365 and Office | Development | Office JavaScript API
0 comments No comments

1 answer

Sort by: Most helpful
  1. Roebe Ta 1,825 Reputation points Independent Advisor
    2026-11-02T10:20:19.5666667+00:00

    Hello @Andreas Davros ,

    Thank you for the detailed investigation and for sharing your findings.

    While reviewing Microsoft's documentations, I noticed that the descriptions for customXmlParts differ slightly across Office hosts:

    • Excel describes customXmlParts as the collection of custom XML parts contained by the workbook.
    • PowerPoint exposes Presentation.customXmlParts as the collection of custom XML parts in the presentation.

    Based on the available documentation, it is not entirely clear whether <PowerPoint.Presentation>Presentation.customXmlParts</PowerPoint.Presentation> is intended to expose all package-level custom XML parts or only those that are considered part of the presentation model. The documentation also does not appear to explicitly address the SharePoint document properties XML part scenario that you described.

    Given the thorough repro you have already provided, including the observation that the XML part becomes available after being referenced through p:custDataLst, I would recommend opening a discussion in the Github Office JavaScript API Discussions forum. This would allow the engineers there to review the behavior, clarify the expected functionality, and potentially improve the documentation if additional guidance is needed.

    Note: This link is shared by community members for your convenience. It points to a third-party site that is not managed or verified by Microsoft. I can’t guarantee the quality, safety, or suitability of any content or software found there. Please review carefully and make sure you understand any potential risks before using it. 

    If you do open a GitHub issue, I would recommend including the repro steps you've provided here, particularly the observation that the XML part becomes accessible through presentation.customXmlParts after it is referenced via p:custDataLst, as that should help the engineers there investigate and provide guidance.

    For reference, the following documentation may be helpful:

    I hope this helps. Feel free to let me know if you need any further assistance.

    Kind regards.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.