#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