如何解决在 google docs 中绘制某些单词 - Google Apps Script
我在下面有这个代码:
var textToHighlight = 'normal';
var highLightStyle = {};
highLightStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FFC0CB';
var paras = doc.getParagraphs();
var textLocation = {};
for (i=0; i<paras.lenght; i++) {
textLocation = paras[i].findText(textToHighlight);
if (textLocation != null && textLocation.getStartOffset() != -1) {
textLocation.getElement().setAttributes(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(),highLightStyle);
}
}
有了它,我想为文档中出现的所有“正常”字词着色,但是当我运行代码时,没有任何反应,也没有指责任何错误,它正常编译。
let pinkColor = "#FFC0CB"
let pinkElements = body.findText("normal")
let elem = pinkElements.getElement().asText();
let t = elem.getText();
elem.setForegroundColor(t.indexOf('normal'),t.indexOf('High')+3,pinkColor)
但是对于上面的代码,它只绘制了它找到的第一个单词“正常”,其余的保持中立。
有人知道这两个代码会发生什么吗?
解决方法
有人知道这两个代码会发生什么吗?
代码 1:
您打错了,lenght
应该是 length
。
代码 2:
请看下面我的回答。
说明:
您需要使用特定关键字遍历所有元素。
要实现这一点,您需要按照以下步骤操作:
-
获取第一个找到的元素:
pinkElement = body.findText(searchWord);
-
检查是否存在带有
searchWord
的元素 -
为这个元素做一些代码
-
分配一个新元素,它是您之前找到的下一个元素:
pinkElement = body.findText(searchWord,pinkElement);
-
重复步骤 1-4 直到没有其他元素:
while (pinkElement != null)
解决方案:
function myFunction() {
let doc = DocumentApp.getActiveDocument();
let body = doc.getBody();
let pinkColor = "#FFC0CB";
let searchWord = "Normal";
let pinkElement = body.findText(searchWord);
while (pinkElement != null) {
let elem = pinkElement.getElement().asText();
let t = elem.getText();
elem.setForegroundColor(t.indexOf(searchWord),t.indexOf('High')+3,pinkColor);
pinkElement = body.findText(searchWord,pinkElement);
}
}
,
我很惊讶它返回了第一个。 “长度”在这一行拼写错误:
for (i=0; i<paras.**lenght**; i++) {
看看是否将其更改为“.length”可以修复它。如果没有,您可以使用 Class Range 处的文档中的类似示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。