【发布时间】:2021-02-14 08:56:08
【问题描述】:
我有一个 Google Doc(只有 Word 之类的类型,而不是电子表格或其他任何类型),我需要在其中迭代一系列规则(正则表达式)并通过附加设置与规则匹配的样式。主体是这样的:
function showIssues() {
var body = DocumentApp
.getActiveDocument()
.getBody();
const rules = {
fluff: {
match: '\b(just|very)\b',
color: '#FFDDDD'
},
adverbs: {
match: '(\w+ly)\b',
color: '#FF00FF'
}
};
for (const [rule, definition] of Object.entries(rules)) {
body.replaceText(definition.match, "<$1>")
.asText()
.setBackgroundColor(definition.color);
}
}
但是,它不仅不将匹配的文本替换为<matched text>,而且还会替换整个背景,而不仅仅是替换文本的背景。
我不太了解 Javascript,而且我以前从未编写过 Google Docs 插件。
如何匹配文本的微小 sn-ps 并设置它们的属性?
与本网站上的其他一些答案不同,我不做单个替换。每个规则可能与文档中的多个元素匹配。因此,我很确定我搞砸了:)
顺便说一句,其中一些文档将在 100K 字的范围内,因此它们可能相当大。
【问题讨论】:
-
stackoverflow.com/questions/17863066/… 和 stackoverflow.com/questions/53730641/… 的重复项需要双重转义才能使正则表达式匹配,
replaceText()返回Element:您需要使用FindText来获取RangeElement设置Bg
标签: javascript regex google-apps-script google-docs add-on