2016-07-02 6 views
0

Office.js/Word javascript APIのバグを報告するにはどうすればよいですか?Office.js/WordのinsertOoxmlメソッドのバグJavascript API

range.insertOoxml(...)またはcontext.document.body.insertOoxml(...)を介してアンカーのようなブックマークを挿入しようとすると、apiは成功を示しますが、結果のドキュメントブックマークを持っていません。唯一の回避策は、アンカーで段落の後に段落を追加することです。これは残念なことに、経験を殺す体に余分な改行を導入します。

基本的に、これは黙って失敗した...

<w:body> 
<w:p> 
<w:bookmarkStart w:id="0" w:name="bookmarkAnchor"/> 
<w:bookmarkEnd w:id="0"/> 
</w:p> 
</w:body> 

...しかし、これは動作します....

<w:body> 
<w:p> 
<w:bookmarkStart w:id="0" w:name="bookmarkAnchor"/> 
<w:bookmarkEnd w:id="0"/> 
</w:p> 
<w:p/> <--- this is a miserable workaround! 
</w:body> 

私はこの問題を示し、いくつかのテストコードをアップロードしてうれしいです。

答えて

0

この質問を送信していただきありがとうございます。ここ 3の問題:あなたのサンプルで説明したXMLがWordProcessingML、ないOOXMLにあるものすべての

  1. まず。 insertOoxmlmethodは、完全なOffice Open XMLを受け取る予定です。

  2. これは...あなたのサンプルに少し違うOOXML表現があることを発見しました。これは新しい段落を追加せずに動作しています。下のサンプルを参照してください。

  3. なぜブックマークを使用していますか?開発者の視点からは、そのスーパーの信頼性が低いので、代わりにコンテンツコントロールを使用することを強くお勧めします。ブックマークは、エンドユーザーが簡単に壊れてしまいます。

OKので、まずここで私が使用していたマークアップです:

function insertOOXMLwithBookmark() { 
 

 
     Word.run(function (context) { 
 
      var myOOXML = "<?xml version='1.0' standalone='yes'?> <?mso-application progid='Word.Document'?> <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:w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'> <w:body> <w:p w:rsidR='00000000' w:rsidRDefault='005C4C17'> <w:bookmarkStart w:id='0' w:name='MyBookmark'/> <w:r> <w:t>provides</w:t> </w:r> <w:bookmarkEnd w:id='0'/> </w:p> <w:sectPr w:rsidR='00000000'> <w:pgSz w:w='12240' w:h='15840'/> <w:pgMar w:top='1440' w:right='1440' w:bottom='1440' w:left='1440' w:header='720' w:footer='720' w:gutter='0'/> <w:cols w:space='720'/> </w:sectPr> </w:body> </w:document> </pkg:xmlData> </pkg:part> </pkg:package>"; 
 

 
      context.document.getSelection().insertOoxml(myOOXML, "replace"); 
 
      return context.sync();

<?xml version="1.0" standalone="yes"?> 
 
<?mso-application progid="Word.Document"?> 
 
<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:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
 
     <w:body> 
 
      <w:p w:rsidR="00000000" w:rsidRDefault="005C4C17"> 
 
      <w:bookmarkStart w:id="0" w:name="MyBookmark"/> 
 
      <w:r> 
 
       <w:t>provides</w:t> 
 
      </w:r> 
 
      <w:bookmarkEnd w:id="0"/> 
 
      </w:p> 
 
      <w:sectPr w:rsidR="00000000"> 
 
      <w:pgSz w:w="12240" w:h="15840"/> 
 
      <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/> 
 
      <w:cols w:space="720"/> 
 
      </w:sectPr> 
 
     </w:body> 
 
     </w:document> 
 
    </pkg:xmlData> 
 
    </pkg:part> 
 
</pkg:package>

、ここではコードです

サンプルコードは、現在の選択範囲を置き換えたり、挿入範囲(基本的には範囲)に追加するだけですが、範囲をサポートするオブジェクトでこの全く同じメソッドを再利用することもできます。 あなたと幸せなコーディング!!!あなたの答えをありがとう、残念ながらそれは動作しません - http://dev.office.com/docs/add-ins/word/create-better-add-ins-for-word-with-office-open-xml

+0

ファン:

はところで私はあなたが有用見つけるかもしれない、この記事を書きました。私に説明させてください...そのアイデアは、 "anchor like"というブックマークを挿入することです。これは、bookmarkStartとbookmarkEnd要素の間に何もないことを意味します。あなたが単語を開き、2文字の間にキャレットを置き、Wordにブックマークを挿入させると、私の言いたいことがわかります。ブックマークには何も表示されず、ジャンプするだけのポイントが与えられます。 – Ron

+0

私はあなたの3つの質問に答えます(1)はい、insertOoxmlはOPCを受け取ります。 OOXMLはWordProcessingML、SpreadsheetML、PresentationMLです。私は正直なところ、それは機能が劣悪だと思う(2)上記の私のコメントを参照してください、はい、それは残念なことに私がやっていることではない(3)ここでは、より長い話があります、私は両方を使用して、物語の要点はコンテンツコントロールには、ドキュメントでマークアップする必要があるすべての構造に対して望ましくない視覚的な振る舞いがあります。ブックマークは他の唯一のオプションではありませんが、標準的なものであり、完璧な編集機能を備えています。 – Ron

+0

ブックマークの動作は、ここによく書かれています。[link](https://support.office.com/en-us/article/Add-or-delete-bookmarks-f68d781f-0150-4583-a90e-a4009d99c2a0?ui=en- US&rs = en-US&ad = US&fromAR = 1)。また、「オプション」メニューを使用して、ユーザーが表示または非表示にすることもできます。また、プログラムでは、ユーザーがオプションを使用して表示することを決定した場合でも、メインビューの表示から非表示にすることができます。プログラムでのみ作成することができます。私は、他の人がドキュメント内の構造を特定するために他の人物を使っていると信じなければならない(例えば、出版プロセス)。 – Ron

関連する問題