JavaScript - Snippets
Content Controls
Word.run(function (context) {
var contentControls = context.document.contentControls;
contentControls.load('text');
return context.sync().then(function () {
if (contentControls.items.length === 0) {
console.log("There isn't a content control in this document.");
} else {
contentControls.items[0].clear();
return context.sync().then(function () {
console.log('Content control cleared of contents.');
});
}
});
})
Create a content control
Word.run(function (context) {
var range = context.document.getSelection();
var myContentControl = range.insertContentControl();
myContentControl.tag = 'Customer-Address';
myContentControl.title = 'Enter Customer Address Here:';
myContentControl.style = 'Heading 2';
myContentControl.insertText('One Microsoft Way, Redmond, WA 98052', 'replace');
myContentControl.cannotEdit = true;
myContentControl.appearance = 'tags';
context.load(myContentControl, 'id');
return context.sync().then(function () {
console.log('Created content control with id: ' + myContentControl.id);
});
})
get all content controls
Word.run(function (context) {
var contentControls = context.document.contentControls;
context.load(contentControls, 'id');
return context.sync().then(function () {
for (var i = 0; i < contentControls.items.length; i++) {
console.log("contentControl[" + i + "].id = " +
contentControls.items[i].id);
}
});
})
get html from a content control
Word.run(function (context) {
var contentControlsWithTag = context.document.contentControls.getByTag('Customer-Address');
context.load(contentControlsWithTag, 'tag');
return context.sync().then(function () {
if (contentControlsWithTag.items.length === 0) {
console.log('No content control found.');
}
else {
var html = contentControlsWithTag.items[0].getHtml();
var ooxml = contentControls.items[0].getOoxml();
return context.sync()
.then(function () {
console.log('Content control HTML: ' + html.value);
});
}
});
})
insert page break after content control
Word.run(function (context) {
var contentControls = context.document.contentControls;
context.load(contentControls, 'id');
return context.sync().then(function () {
if (contentControls.items.length === 0) {
console.log('No content control found.');
}
else {
contentControls.items[0].insertBreak('page', "After");
contentControls.items[0].insertHtml('<strong>HTML content inserted into the content control.</strong>', 'Start');
contentControls.items[0].insertParagraph('Text of the inserted paragraph.', 'After');
contentControls.items[0].insertText('Replaced text in the first content control.', 'Replace');
return context.sync()
.then(function () {
console.log('Inserted a page break after the first content control.');
});
}
});
})
displaying content controls
Word.run(function (context) {
var contentControls = context.document.contentControls;
context.load(contentControls, 'id');
return context.sync().then(function () {
if (contentControls.items.length === 0) {
console.log('No content control found.');
}
else {
contentControls.items[0].load( 'appearance,' +
'cannotDelete,' +
'cannotEdit,' +
'color,' +
'id,' +
'placeHolderText,' +
'removeWhenEdited,' +
'title,' +
'text,' +
'type,' +
'style,' +
'tag,' +
'font/size,' +
'font/name,' +
'font/color');
return context.sync()
.then(function () {
console.log('Property values of the first content control:' +
' ----- appearance: ' + contentControls.items[0].appearance +
' ----- cannotDelete: ' + contentControls.items[0].cannotDelete +
' ----- cannotEdit: ' + contentControls.items[0].cannotEdit +
' ----- color: ' + contentControls.items[0].color +
' ----- id: ' + contentControls.items[0].id +
' ----- placeHolderText: ' + contentControls.items[0].placeholderText +
' ----- removeWhenEdited: ' + contentControls.items[0].removeWhenEdited +
' ----- title: ' + contentControls.items[0].title +
' ----- text: ' + contentControls.items[0].text +
' ----- type: ' + contentControls.items[0].type +
' ----- style: ' + contentControls.items[0].style +
' ----- tag: ' + contentControls.items[0].tag +
' ----- font size: ' + contentControls.items[0].font.size +
' ----- font name: ' + contentControls.items[0].font.name +
' ----- font color: ' + contentControls.items[0].font.color);
});
}
});
})
Inserts, updates and retrieves content controls
$("#insert-controls").click(() => tryCatch(insertContentControls));
$("#change-controls").click(() => tryCatch(modifyContentControls));
$("#setup").click(() => tryCatch(setup));
async function insertContentControls() {
await Word.run(async (context) => {
let paragraphs = context.document.body.paragraphs;
paragraphs.load("$none"); // Don't need any properties; just wrap each paragraph with a content control.
await context.sync();
for (let i = 0; i < paragraphs.items.length; i++) {
let contentControl = paragraphs.items[i].insertContentControl();
if (i % 2 === 0) {
contentControl.tag = "even";
} else {
contentControl.tag = "odd";
}
}
console.log("Content controls inserted: " + paragraphs.items.length);
await context.sync();
});
}
async function modifyContentControls() {
await Word.run(async (context) => {
let evenContentControls = context.document.contentControls.getByTag("even");
let oddContentControls = context.document.contentControls.getByTag("odd");
evenContentControls.load("length");
oddContentControls.load("length");
await context.sync();
for (let i = 0; i < evenContentControls.items.length; i++) {
evenContentControls.items[i].set({
color: "red",
title: "Odd ContentControl #" + (i + 1),
appearance: "Tags"
});
evenContentControls.items[i].insertParagraph("This is an odd content control", "End");
}
for (let j = 0; j < oddContentControls.items.length; j++) {
oddContentControls.items[j].set({
color: "green",
title: "Even ContentControl #" + (j + 1),
appearance: "Tags"
});
oddContentControls.items[j].insertHtml("This is an <b>even</b> content control", "End");
}
await context.sync();
});
}
async function setup() {
await Word.run(async (context) => {
context.document.body.clear();
context.document.body.insertParagraph("One more paragraph. ", "Start");
context.document.body.insertParagraph("Inserting another paragraph. ", "Start");
context.document.body.insertParagraph(
"Video provides a powerful way to help you prove your point.",
"Start"
);
context.document.body.paragraphs
.getLast()
.insertText(
"To make your document look professionally produced.",
"Replace"
);
});
}
async function tryCatch(callback) {
try {
await callback();
} catch (error) {
console.error(error);
}
}
© 2026 Better Solutions Limited. All Rights Reserved. © 2026 Better Solutions Limited TopPrev