var selectedElements = selection.getSelectedElements();
for (var i = 0; i < selectedElements.length; ++i) {
var selectedElement = selectedElements[i];
// Only modify elements that can be edited as text; skip images and other
// non-text elements.
var text = selectedElement.getElement().editAsText();
// Change the background color of the selected part of the element, or the
// full element if it's completely selected.
if (selectedElement.isPartial()) {
text.setColor(selectedElement.getStartOffset(),
selectedElement.getEndOffsetInclusive(), '#69359c');
}
}
}
The above text takes a selection inside of a Google Doc and changes it to the hex code #69359c (a dark purple). I have searched many websites, many gits, and asked many friends for help with my project.
My end project is this:
- Create a menu for Google Docs with my selector (DONE)
- Be able to highlight a certain amount of text and change it to an array of colors (ROY G. BIV / the rainbow).
- Have the format be only for Google Documents.
If anyone can help me it would be highly appreciated.
You are pretty close to the answer already. Try iterating over the elements within your 'text' variable, so you can change the background on each one.
You could use something like this to iterate over each letter:
Here is a sample of a function to use different colors:
For your last question, since the Text class is not part of Javascript, but from app-script library, this will not work outside Google environment.