Не удается прочитать элементы управления содержимым в существующем документе Word с помощью office.js API

#javascript #office-js #add-in #office-addins #word

Вопрос:

Я пытаюсь разобраться со списком существующих элементов управления содержимым в документе Word с помощью office.js фреймворк надстройки, но я не могу этого сделать. Я даже попытался добавить свой собственный элемент управления контентом, а затем запросил управление контентом, но API не отвечает. Ниже приведен мой фрагмент кода.

Буду признателен, если вы посоветуете, как я могу получить список всех элементов управления содержимым в документе Word. К вашему сведению, использование getByTag() тоже не сработало.

 Office.onReady((info) => {
  document.getElementById("host-info").innerText = info.host.toString();
  document.getElementById("sideload-msg").style.display = "none";
  document.getElementById("app-body").style.display = "flex";
  document.getElementById("run").onclick = run;
  document.getElementById("count-controls").onclick = countControls;
});

export async function run() {
  return Word.run(async (context) => {
    /**
     * Insert your Word code here
     */

    const text = context.document.body.insertText("FIlling some random text ", Word.InsertLocation.start);
    text.font.underline = Word.UnderlineType.dotDashLineHeavy;

    const controls = text.insertContentControl();
    controls.title = "My text";
    controls.tag = "#mytext";
    controls.appearance = "Tags";
    controls.color = "red";

    await context.sync();
  });
}

export async function countControls() {
  console.log("In Count Controls");
  return Word.run(async (context) => {
    let numberOfControls = context.document.contentControls.items.length;  // <-- This line fails to respond with any content
    const para = context.document.body.insertParagraph(
      "Number of controls: "   numberOfControls,
      Word.InsertLocation.end
    );
    para.font.color = "blue";
    await context.sync();
  }).catch((error) => {
    console.log("Error: "   JSON.stringify(error));
    if (error instanceof OfficeExtension.Error) {
      console.log("Debug info: "   JSON.stringify(error.debugInfo));
    }
  });
}

 

Комментарии:

1. В Word-VBA вы должны использовать document.ContentControls.count , чтобы получить количество CCS. Нет элементов-коллекции для элементов управления контентом

2. Спасибо, Айк. Тем не менее, я ищу аналогичное решение, используя office.js рамки.

3. Вы пробовали .ContentControls.count в своих рамках?

4. Является numberOfControls ли значение null, «неопределенным» или «0»? Кроме того, поддерживаются только элементы управления содержимым форматированного текста Office.js, поэтому я не думаю, что он найдет какой-либо другой тип. См. 1-й абзац docs.microsoft.com/javascript/api/word/word.contentcontrol