Word insertOoxml method returning Error: Unknown f

2020-06-24 05:01发布

问题:

I have an existing Word Add-In solution that has been working well for a long time that now cannot insert OOXML content into Word documents. Trying to break this down I can't get the insertOoxml method to work under any circumstance.

To reproduce:

        await Word.run(async (context) => {
            context.document.getSelection().insertOoxml(theOoxml, 'Start');
            await context.sync();
        });

Where theOoxml can be any valid Ooxml string. The reference example I have been using is:

<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
  <pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
    <pkg:xmlData>
      <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
        <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml" />
      </Relationships>
    </pkg:xmlData>
  </pkg:part>
  <pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
    <pkg:xmlData>
      <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid wp14">
        <w:body>
          <w:p>
            <w:r>
                <w:t>
                    Hey there
                </w:t>
            </w:r>
          </w:p>
        </w:body>
      </w:document>
    </pkg:xmlData>
  </pkg:part>
</pkg:package>

But have also tried other reference examples: https://docs.microsoft.com/en-us/office/dev/add-ins/word/create-better-add-ins-for-word-with-office-open-xml

Results in:

word-web-16.00.debug.js:11162 Uncaught (in promise) Error: unknown at new RuntimeError (word-web-16.00.debug.js:11162) at RequestContext.ClientRequestContext.processRequestExecutorResponseMessage (word-web-16.00.debug.js:13713) at word-web-16.00.debug.js:13620

Have tried it in different tenants, browsers, and this is driving me a bit bonkers. If this does work for you please let me know your general config/setup.

Thanks.

UPDATE:

To avoid questions about the validity of the XML itself, the following code gets the OOXML for the current selection and then duplicates it after the selection - also fails with the same error.

await Word.run(async (context) => {

   var sourceRange = context.document.getSelection();
   var contentToCopy = sourceRange.getOoxml();
   await context.sync();

   sourceRange.insertOoxml(contentToCopy.value, 'After');
   await context.sync();
});

Hopefully there is something simple I am missing here. Any suggestions/workarounds for inserting any Ooxml fragment appreciated.

UPDATE 2018-09-04: Microsoft have acknowledged the issue and are going to fix it.

UPDATE 2018-09-12: InsertOoxml appears to be working again - although I have not had a confirmation from Microsoft regarding the fix.

回答1:

InsertOoxml appears to be working again now as it was before.

I have not yet had a conformation from the Microsoft support case regarding the fix, but all my customers appears to be functioning again.

Thanks to Juan Balmori and those working on the extensibility team for getting this fixed up.

J.