Here is some code that evaluates each word in a paragraph. It bolds every word in the third paragraph that is not underlined. As an example, the code is getting the 3rd paragraph. You will need to adjust the code to your criteria. The code assumes that if the first letter of the word is underlined, that the entire word is underlined. Each word is set to bold with a beginning and ending index.
function findAndBold() {
var allParagraphs,bodyElement,endPosition,lengthOfThisWord ,numberOfWordsInPara ,
paragraphAsString,remainingTxtInParagraph,startPosition,text ,theParagraph;
bodyElement = DocumentApp.getActiveDocument().getBody();
allParagraphs = bodyElement.getParagraphs();
//Get a paragraph by index number E.g. 2 Gets the third paragraph
theParagraph = allParagraphs[2];
//Logger.log("theParagraph: " + theParagraph);
// Only modify elements that can be edited as text; skip images and other
// non-text elements.
text = theParagraph.editAsText();
paragraphAsString = text.getText();
//Logger.log("paragraphAsString: " + paragraphAsString);
startPosition = 0;
endPosition = 0;
remainingTxtInParagraph = paragraphAsString;
lengthOfThisWord = 0;
numberOfWordsInPara = 0;//Initialize with a value of zero
while (remainingTxtInParagraph.length > 0) {
Logger.log("remainingTxtInParagraph: " + remainingTxtInParagraph.length);
numberOfWordsInPara ++;
lengthOfThisWord = remainingTxtInParagraph.indexOf(" ");
Logger.log("lengthOfThisWord: " + lengthOfThisWord);
if (lengthOfThisWord > -1) {
endPosition = startPosition + lengthOfThisWord;
Logger.log("startPosition: " + startPosition);
Logger.log("endPosition: " + endPosition);
} else {
lengthOfThisWord = remainingTxtInParagraph.length;
Logger.log("lengthOfThisWord: " + lengthOfThisWord);
endPosition = startPosition + lengthOfThisWord - 1;
Logger.log("final end position: " + endPosition);
Logger.log("startPosition: " + startPosition);
};
remainingTxtInParagraph = remainingTxtInParagraph.substr(lengthOfThisWord + 1); //length is omitted. Extracts characters to the end
Logger.log("remainingTxtInParagraph: " + remainingTxtInParagraph.length);
if (!text.isUnderline(startPosition)) {
text.setBold(startPosition, endPosition, true);
};
startPosition = startPosition + lengthOfThisWord + 1;
Logger.log("next iteration startPosition: " + startPosition);
Logger.log(" ");
};
Logger.log("numberOfWordsInPara: " + numberOfWordsInPara);
}
The code uses a combination of JavaScript string methods, the JavaScript string length property, along with the Apps Script Text Class methods.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…