So basically I have a paragraph with some text underlined, but not all text is underlined. I want to be able to iterate through the selected text and change the text size of the UN-underlined text.
Essentially I want the underlined text to stick out more. Is there a way to iterate through the paragraph and check if each word is underlined? The text element in GAS has a isUnderlined()
function but that doesn't do me any good since I only know how to grab the entire element.
So basically I have a paragraph with some text underlined, but not all text is underlined. I want to be able to iterate through the selected text and change the text size of the UN-underlined text.
Essentially I want the underlined text to stick out more. Is there a way to iterate through the paragraph and check if each word is underlined? The text element in GAS has a isUnderlined()
function but that doesn't do me any good since I only know how to grab the entire element.
- Once you get the element as you mentioned, you can use enum Attribute in this link (developers.google./apps-script/reference/document/attribute) to check if that element is underlined or not. So you can assign a var like this "var underline = DocumentApp.Attribute.UNDERLINE" and get each element as paragraph and pare with the each paragraph element as mentioned in below link developers.google./apps-script/reference/document/…. Hope that helps! – KRR Commented Jan 15, 2015 at 20:33
2 Answers
Reset to default 4Here 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 bination of JavaScript string methods, the JavaScript string length property, along with the Apps Script Text Class methods.
the easiest way to do that is if you iterate through each character in the paragraph.
function notUnder() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var paragraph = body.getChild(0); //Analyze the first paragraph in document
var txt = paragraph.asParagraph().getChild(0); //assumes the paragraph only has text
var len = txt.asText().getText().length;
for (var i = 0; i<len; i++) {
var isUnder = txt.asText().isUnderline(i);
if (!isUnder) {
txt.asText().setFontSize(i,i,10); //sets the character to font size 10 if is not underlined
};
};
};
This will make all characters that are not underlined have font size of 10. If a word has only one character underlined, all other characters in the word will be of size 10. This can be worked to behave differently, but is a starting point...
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742334959a4424465.html
评论列表(0条)