For a word add-ins in javascript, a simple use case is to get the word on the left of the cursor and to replace it in upper case.
For example, if |
is the cursor:
Hello world|
will becomeHello WORLD|
Hello| world
will becomeHELLO| world
Is it possible to perform this example with the Word.Range class? For example, to expand the range until a space like this fictive code:
Word.run(function (context) {
var selection = context.document.getSelection();
var cursor = selection.getRange('Start');
// Fictive: how to expand the range to the left until a space?
var range = cursor.expandToLeftUntil(' ');
range.load("text");
var html = range.getHtml();
await context.sync();
var textToReplace = html.value.toUpperCase();
// Replace the text
range.insertText(textToReplace, 'Replace');
await context.sync();
});
Or is there any other solution?
A possible strategy is to use the search method to get a RangeCollection of all the words in the document (or body or paragraph, etc.). Then get a reference to the current selected range (where the cursor is). Then loop through the collection and call the Range.compareLocationWith method to find the range that is "AdjacentBefore" the currently selected range.