Да, это возможно, как показано в следующем фрагменте кода, написанном в Script Lab, путем изменения образца, предоставленного этим инструментом.
Хитрость заключается в работе с (как минимум) двумя диапазонами, один для другой текст для элементов управления контентом, как показано во фрагменте кода ниже и показан на снимке экрана в конце.
Пояснение
Начальная точка - range
, соответствующая целевой области (пример предполагает весь документ). Затем он «копируется» в новый объект range
для вставляемого текста (в примере предполагается, что он должен находиться в конце существующего содержимого).
Новое текстовое содержимое до точки, где требуется элемент управления контентом, вставляется в новый абзац («на новой строке») - \n
в начале строки.
Затем создается новый range
в конце диапазон текста для управления контентом. Он вставляется, форматируется и ему присваивается текст.
Затем для цели текста range
устанавливается после диапазона управления содержимым и добавляется дополнительный текст.
Код
await Word.run(async (context) => {
let rngDoc = context.document.body.getRange("Content");
let rngTarget = rngDoc.getRange("End");
rngDoc.load("text");
await context.sync();
console.log(rngDoc.text);
rngTarget.insertText("\nStart: ", "Start");
let rngCC = rngTarget.getRange("End");
let cc = rngCC.insertContentControl();
cc.appearance = Word.ContentControlAppearance.boundingBox;
cc.insertText("In content control", "Replace");
rngTarget = rngCC.getRange("After");
rngTarget.insertText(" End.", "After");
await context.sync();
console.log("Content controls inserted: " );
});
Результат