我正在尝试突出显示Google文档中的某些单词。我知道我可以使用document.replace替换文本,但是它仅替换字符串本身,而不格式化。是否可以使用Google Apps脚本用彩色字符串替换字符串?
最佳答案
这是一个更好的解决方案:
function highlightTextTwo() {
var doc = DocumentApp.openById('<your document id');
var textToHighlight = 'dusty death';
var highlightStyle = {};
highlightStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FF0000';
var paras = doc.getParagraphs();
var textLocation = {};
var i;
for (i=0; i<paras.length; ++i) {
textLocation = paras[i].findText(textToHighlight);
if (textLocation != null && textLocation.getStartOffset() != -1) {
textLocation.getElement().setAttributes(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(), highlightStyle);
}
}
}
上一个答案:
关键是能够仅引用您要涂色的单词。
我的解决方案是:
获取包含您要着色的单词的段落文本,删除原始段落,然后再添加文本的每个部分。在将每个部分添加回时,appendText返回对添加的文本的引用,然后可以使用setForegroundColor()指定其颜色:
function highlightText() {
var doc = DocumentApp.openById('<your document id>');
var textToHighlight = 'dusty death';
var textLength = textToHighlight.length;
var paras = doc.getParagraphs();
var paraText = '';
var start;
for (var i=0; i<paras.length; ++i) {
paraText = paras[i].getText();
start = paraText.indexOf(textToHighlight);
if (start >= 0) {
var preText = paraText.substr(0, start);
var text = paraText.substr(start, textLength);
var postText = paraText.substr(start + textLength, paraText.length);
doc.removeChild(paras[i]);
var newPara = doc.insertParagraph(i, preText);
newPara.appendText(text).setForegroundColor('#FF0000');
newPara.appendText(postText).setForegroundColor('#000000');
}
}
}
关于google-apps-script - 我可以使用Google Apps脚本为Google文档中的某些单词着色吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064972/