Word.CustomXmlPart class

カスタム XML パーツを表します。

Extends

注釈

[ API セット: WordApi 1.4 ]

プロパティ

context

オブジェクトに関連付けられている要求コンテキスト。 これにより、アドインのプロセスが Office ホスト アプリケーションのプロセスに接続されます。

id

カスタム XML パーツの ID を取得します。

namespaceUri

カスタム XML パーツの名前空間 URI を取得します。

メソッド

delete()

カスタム XML パーツを削除します。

deleteAttribute(xpath, namespaceMappings, name)

xpath によって識別される要素から、指定された名前の属性を削除します。

deleteElement(xpath, namespaceMappings)

xpath によって識別される要素を削除します。

getXml()

カスタム XML パーツの完全な XML コンテンツを取得します。

insertAttribute(xpath, namespaceMappings, name, value)

指定された名前と値を持つ属性を xpath によって識別される要素に挿入します。

insertElement(xpath, xml, namespaceMappings, index)

子位置インデックスで xpath によって識別される親要素の下に、指定された XML を挿入します。

load(options)

オブジェクトの指定されたプロパティを読み込むコマンドを待ち行列に入れます。 プロパティを読み取る前に、context.sync() を呼び出す必要があります。

load(propertyNames)

オブジェクトの指定されたプロパティを読み込むコマンドを待ち行列に入れます。 プロパティを読み取る前に、context.sync() を呼び出す必要があります。

load(propertyNamesAndPaths)

オブジェクトの指定されたプロパティを読み込むコマンドを待ち行列に入れます。 プロパティを読み取る前に、context.sync() を呼び出す必要があります。

query(xpath, namespaceMappings)

カスタム XML パーツの XML コンテンツを照会します。

setXml(xml)

カスタム XML パーツの完全な XML コンテンツを設定します。

toJSON()

API オブジェクトが に渡されたときにより便利な出力を提供するために、JavaScript toJSON() メソッドを JSON.stringify()オーバーライドします。 (JSON.stringifyさらに、渡される オブジェクトの メソッドを呼び出toJSONします)。一方、元のWord。CustomXmlPart オブジェクトは API オブジェクトです。このメソッドは、元のtoJSONオブジェクトから読み込まれた子プロパティの浅いコピーを含むプレーンな JavaScript オブジェクト (としてWord.Interfaces.CustomXmlPartData型指定) を返します。

track()

ドキュメントの環境変更に基づいて自動的に調整する目的でオブジェクトを追跡します。 この呼び出しは、context.trackedObjects.add(thisObject)の短縮形です。 このオブジェクトを呼び出しで .sync 使用していて、".run" バッチのシーケンシャル実行の外部で使用していて、プロパティを設定するとき、またはオブジェクトのメソッドを呼び出すときに "InvalidObjectPath" エラーが発生する場合は、オブジェクトが最初に作成されたときに追跡対象のオブジェクト コレクションにオブジェクトを追加する必要があります。 このオブジェクトがコレクションの一部である場合は、親コレクションも追跡する必要があります。

untrack()

前に追跡されていた場合、このオブジェクトに関連付けられているメモリを解放します。 この呼び出しは、context.trackedObjects.remove(thisObject)の短縮形です。 追跡対象オブジェクトが多いとホスト アプリケーションの動作が遅くなります。追加したオブジェクトが不要になったら、必ずそれを解放してください。 メモリ解放が有効になる前に を呼び出す context.sync() 必要があります。

updateAttribute(xpath, namespaceMappings, name, value)

xpath によって識別される要素の指定された名前を持つ属性の値を更新します。

updateElement(xpath, xml, namespaceMappings)

xpath によって識別される要素の XML を更新します。

プロパティの詳細

context

オブジェクトに関連付けられている要求コンテキスト。 これにより、アドインのプロセスが Office ホスト アプリケーションのプロセスに接続されます。

context: RequestContext;

プロパティ値

id

カスタム XML パーツの ID を取得します。

readonly id: string;

プロパティ値

string

注釈

[ API セット: WordApi 1.4 ]

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml

// Adds a custom XML part.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load("id");
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log("Added custom XML part:");
  console.log(readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings = context.document.settings;
  settings.add("ContosoReviewXmlPartId", customXmlPart.id);

  await context.sync();
});

namespaceUri

カスタム XML パーツの名前空間 URI を取得します。

readonly namespaceUri: string;

プロパティ値

string

注釈

[ API セット: WordApi 1.4 ]

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Gets the namespace URI from a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    customXmlPart.load("namespaceUri");
    await context.sync();

    const namespaceUri = customXmlPart.namespaceUri;
    console.log(`Namespace URI: ${JSON.stringify(namespaceUri)}`);
  } else {
    console.warn("Didn't find custom XML part");
  }
});

メソッドの詳細

delete()

カスタム XML パーツを削除します。

delete(): void;

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Deletes a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    let customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xmlBlob = customXmlPart.getXml();
    customXmlPart.delete();
    customXmlPart = context.document.customXmlParts.getItemOrNullObject(xmlPartIDSetting.value);

    await context.sync();

    if (customXmlPart.isNullObject) {
      console.log(`The XML part with the ID ${xmlPartIDSetting.value} has been deleted`);

      // Delete the associated setting too.
      xmlPartIDSetting.delete();

      await context.sync();
    } else {
      const readableXml = addLineBreaksToXML(xmlBlob.value);
      const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} wasn't deleted:\n${readableXml}`;
      console.error(strangeMessage);
    }
  } else {
    console.warn("Didn't find custom XML part to delete");
  }
});

...

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Deletes a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    let customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xmlBlob = customXmlPart.getXml();
    customXmlPart.delete();
    customXmlPart = context.document.customXmlParts.getItemOrNullObject(xmlPartIDSetting.value);

    await context.sync();

    if (customXmlPart.isNullObject) {
      console.log(`The XML part with the ID ${xmlPartIDSetting.value} has been deleted`);

      // Delete the associated setting too.
      xmlPartIDSetting.delete();

      await context.sync();
    } else {
      const readableXml = addLineBreaksToXML(xmlBlob.value);
      const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} wasn't deleted:\n${readableXml}`;
      console.error(strangeMessage);
    }
  } else {
    console.warn("Didn't find custom XML part to delete");
  }
});

deleteAttribute(xpath, namespaceMappings, name)

xpath によって識別される要素から、指定された名前の属性を削除します。

deleteAttribute(xpath: string, namespaceMappings: {
            [key: string]: string;
        }, name: string): void;

パラメーター

xpath

string

必須です。 XPath 表記の単一要素への絶対パス。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

name

string

必須です。 属性の名前。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。

deleteElement(xpath, namespaceMappings)

xpath によって識別される要素を削除します。

deleteElement(xpath: string, namespaceMappings: {
            [key: string]: string;
        }): void;

パラメーター

xpath

string

必須です。 XPath 表記の単一要素への絶対パス。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。

getXml()

カスタム XML パーツの完全な XML コンテンツを取得します。

getXml(): OfficeExtension.ClientResult<string>;

戻り値

注釈

[ API セット: WordApi 1.4 ]

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Adds a custom XML part.
// If you want to populate the CustomXml.namespaceUri property, you must include the xmlns attribute.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load(["id", "namespaceUri"]);
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log(`Added custom XML part with namespace URI ${customXmlPart.namespaceUri}:`);
  console.log(readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings = context.document.settings;
  settings.add("ContosoReviewXmlPartIdNS", customXmlPart.id);

  await context.sync();
});

...

// Adds a custom XML part.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load("id");
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log("Added custom XML part:");
  console.log(readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings = context.document.settings;
  settings.add("ContosoReviewXmlPartId", customXmlPart.id);

  await context.sync();
});

insertAttribute(xpath, namespaceMappings, name, value)

指定された名前と値を持つ属性を xpath によって識別される要素に挿入します。

insertAttribute(xpath: string, namespaceMappings: {
            [key: string]: string;
        }, name: string, value: string): void;

パラメーター

xpath

string

必須です。 XPath 表記の単一要素への絶対パス。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

name

string

必須です。 属性の名前。

value

string

必須です。 属性の値。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an attribute into a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertAttribute method inserts an attribute with the given name and value into the element identified by the xpath parameter.
    customXmlPart.insertAttribute(
      "/contoso:Reviewers",
      { contoso: "http://schemas.contoso.com/review/1.0" },
      "Nation",
      "US"
    );
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted attribute:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert attribute into");
  }
});

...

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an attribute into a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertAttribute method inserts an attribute with the given name and value into the element identified by the xpath parameter.
    customXmlPart.insertAttribute("/Reviewers", { contoso: "http://schemas.contoso.com/review/1.0" }, "Nation", "US");
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted attribute:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert attribute into");
  }
});

insertElement(xpath, xml, namespaceMappings, index)

子位置インデックスで xpath によって識別される親要素の下に、指定された XML を挿入します。

insertElement(xpath: string, xml: string, namespaceMappings: {
            [key: string]: string;
        }, index?: number): void;

パラメーター

xpath

string

必須です。 XPath 表記の単一の親要素への絶対パス。

xml

string

必須です。 挿入する XML コンテンツ。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

index

number

オプション。 挿入する新しい XML の位置を 0 から始めます。 省略すると、この親の最後の子として XML が追加されます。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an element into a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertElement method inserts the given XML under the parent element identified by the xpath parameter at the provided child position index.
    customXmlPart.insertElement(
      "/contoso:Reviewers",
      "<Lead>Mark</Lead>",
      { contoso: "http://schemas.contoso.com/review/1.0" },
      0
    );
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted element:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert element into");
  }
});

...

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an element into a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertElement method inserts the given XML under the parent element identified by the xpath parameter at the provided child position index.
    customXmlPart.insertElement(
      "/Reviewers",
      "<Lead>Mark</Lead>",
      { contoso: "http://schemas.contoso.com/review/1.0" },
      0
    );
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted element:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert element into");
  }
});

load(options)

オブジェクトの指定されたプロパティを読み込むコマンドを待ち行列に入れます。 プロパティを読み取る前に、context.sync() を呼び出す必要があります。

load(options?: Word.Interfaces.CustomXmlPartLoadOptions): Word.CustomXmlPart;

パラメーター

options
Word.Interfaces.CustomXmlPartLoadOptions

読み込むオブジェクトのプロパティのオプションを提供します。

戻り値

load(propertyNames)

オブジェクトの指定されたプロパティを読み込むコマンドを待ち行列に入れます。 プロパティを読み取る前に、context.sync() を呼び出す必要があります。

load(propertyNames?: string | string[]): Word.CustomXmlPart;

パラメーター

propertyNames

string | string[]

読み込むプロパティを指定するコンマ区切り文字列または文字列の配列。

戻り値

load(propertyNamesAndPaths)

オブジェクトの指定されたプロパティを読み込むコマンドを待ち行列に入れます。 プロパティを読み取る前に、context.sync() を呼び出す必要があります。

load(propertyNamesAndPaths?: {
            select?: string;
            expand?: string;
        }): Word.CustomXmlPart;

パラメーター

propertyNamesAndPaths

{ select?: string; expand?: string; }

propertyNamesAndPaths.select は、読み込むプロパティを指定するコンマ区切り文字列で propertyNamesAndPaths.expand 、読み込むナビゲーション プロパティを指定するコンマ区切りの文字列です。

戻り値

query(xpath, namespaceMappings)

カスタム XML パーツの XML コンテンツを照会します。

query(xpath: string, namespaceMappings: {
            [key: string]: string;
        }): OfficeExtension.ClientResult<string[]>;

パラメーター

xpath

string

必須です。 XPath クエリ。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

戻り値

各項目が XPath クエリと一致するエントリを表す配列。

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Queries a custom XML part for elements matching the search terms.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xpathToQueryFor = "/contoso:Reviewers";
    const clientResult = customXmlPart.query(xpathToQueryFor, {
      contoso: "http://schemas.contoso.com/review/1.0"
    });

    await context.sync();

    console.log(`Queried custom XML part for ${xpathToQueryFor} and found ${clientResult.value.length} matches:`);
    for (let i = 0; i < clientResult.value.length; i++) {
      console.log(clientResult.value[i]);
    }
  } else {
    console.warn("Didn't find custom XML part to query");
  }
});

...

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Queries a custom XML part for elements matching the search terms.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xpathToQueryFor = "/Reviewers/Reviewer";
    const clientResult = customXmlPart.query(xpathToQueryFor, {
      contoso: "http://schemas.contoso.com/review/1.0"
    });

    await context.sync();

    console.log(`Queried custom XML part for ${xpathToQueryFor} and found ${clientResult.value.length} matches:`);
    for (let i = 0; i < clientResult.value.length; i++) {
      console.log(clientResult.value[i]);
    }
  } else {
    console.warn("Didn't find custom XML part to query");
  }
});

setXml(xml)

カスタム XML パーツの完全な XML コンテンツを設定します。

setXml(xml: string): void;

パラメーター

xml

string

必須です。 設定する XML コンテンツ。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Replaces a custom XML part.
await Word.run(async (context) => {
  const settings = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const originalXmlBlob = customXmlPart.getXml();
    await context.sync();

    let readableXml = addLineBreaksToXML(originalXmlBlob.value);
    console.log("Original custom XML part:");
    console.log(readableXml);

    // The setXml method replaces the entire XML part.
    customXmlPart.setXml(
      "<Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>John</Reviewer><Reviewer>Hitomi</Reviewer></Reviewers>"
    );
    const updatedXmlBlob = customXmlPart.getXml();
    await context.sync();

    readableXml = addLineBreaksToXML(updatedXmlBlob.value);
    console.log("Replaced custom XML part:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to replace");
  }
});

toJSON()

API オブジェクトが に渡されたときにより便利な出力を提供するために、JavaScript toJSON() メソッドを JSON.stringify()オーバーライドします。 (JSON.stringifyさらに、渡される オブジェクトの メソッドを呼び出toJSONします)。一方、元のWord。CustomXmlPart オブジェクトは API オブジェクトです。このメソッドは、元のtoJSONオブジェクトから読み込まれた子プロパティの浅いコピーを含むプレーンな JavaScript オブジェクト (としてWord.Interfaces.CustomXmlPartData型指定) を返します。

toJSON(): Word.Interfaces.CustomXmlPartData;

戻り値

track()

ドキュメントの環境変更に基づいて自動的に調整する目的でオブジェクトを追跡します。 この呼び出しは、context.trackedObjects.add(thisObject)の短縮形です。 このオブジェクトを呼び出しで .sync 使用していて、".run" バッチのシーケンシャル実行の外部で使用していて、プロパティを設定するとき、またはオブジェクトのメソッドを呼び出すときに "InvalidObjectPath" エラーが発生する場合は、オブジェクトが最初に作成されたときに追跡対象のオブジェクト コレクションにオブジェクトを追加する必要があります。 このオブジェクトがコレクションの一部である場合は、親コレクションも追跡する必要があります。

track(): Word.CustomXmlPart;

戻り値

untrack()

前に追跡されていた場合、このオブジェクトに関連付けられているメモリを解放します。 この呼び出しは、context.trackedObjects.remove(thisObject)の短縮形です。 追跡対象オブジェクトが多いとホスト アプリケーションの動作が遅くなります。追加したオブジェクトが不要になったら、必ずそれを解放してください。 メモリ解放が有効になる前に を呼び出す context.sync() 必要があります。

untrack(): Word.CustomXmlPart;

戻り値

updateAttribute(xpath, namespaceMappings, name, value)

xpath によって識別される要素の指定された名前を持つ属性の値を更新します。

updateAttribute(xpath: string, namespaceMappings: {
            [key: string]: string;
        }, name: string, value: string): void;

パラメーター

xpath

string

必須です。 XPath 表記の単一要素への絶対パス。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

name

string

必須です。 属性の名前。

value

string

必須です。 属性の新しい値。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。

updateElement(xpath, xml, namespaceMappings)

xpath によって識別される要素の XML を更新します。

updateElement(xpath: string, xml: string, namespaceMappings: {
            [key: string]: string;
        }): void;

パラメーター

xpath

string

必須です。 XPath 表記の単一要素への絶対パス。

xml

string

必須です。 格納する新しい XML コンテンツ。

namespaceMappings

{ [key: string]: string; }

必須です。 プロパティ値が名前空間名であり、そのプロパティ名が対応する名前空間のエイリアスであるオブジェクト。 たとえば、 {greg: "http://calendartypes.org/xsds/GregorianCalendar"}です。 プロパティ名 ("greg" など) には、スラッシュ "/" などの予約済み XPath 文字を使用しない任意の文字列を指定できます。

戻り値

void

注釈

[ API セット: WordApi 1.4 ]

ツリー内の要素に xmlns 属性 (通常は値は URI ではなく) がある場合、その属性値のエイリアスは xpath パラメーターの要素名の前に付ける必要があります。 たとえば、ツリーが次の例であるとします。

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

<Week> xpath は /Day/greg:Month/Week である必要があります。ここで、greg は namespaceMappings パラメーターの "http://calendartypes.org/xsds/GregorianCalendar" にマップされるエイリアスです。