我试图做一个谷歌Apps脚本,将突出在谷歌文档选择题的答案。 下面是一个例子问题:
Question....blah blah blah.
a. Answer 1
b. Answer 2
c. Answer 3
d. Answer 4
e. Answer 5
这里就是我这么远的脚本:
function highlight() {
var doc = DocumentApp.openByUrl('https://docs.google.com/document/d/1nP6ra0zIMI3OB-zsTMbFybO2e7ajoYgQi8doDcurGew/edit?usp=sharing');
var style = {};
style[DocumentApp.Attribute.BACKGROUND_COLOR] = '#E3E65B';
var text = doc.editAsText();
var result = text.findText(/^(a|b|c|d|e)\..*/gm).getElement();
for (var i = 0; i < result.length; i++){
result[i].setAttributes(style);
}
}
但它只是给我“不能调用方法‘’空的” getElement。
你是不是期待一个没有匹配的结果。 试试这个。
function highlight() {
var doc = DocumentApp.openByUrl('https://docs.google.com/document/d/1nP6ra0zIMI3OB-zsTMbFybO2e7ajoYgQi8doDcurGew/edit?usp=sharing');
var style = {};
style[DocumentApp.Attribute.BACKGROUND_COLOR] = '#E3E65B';
var text = doc.editAsText();
if(text.findText(/^(a|b|c|d|e)\. Answer [0-9]+$/gm) !== "undefined")
{
var result = text.findText(/^(a|b|c|d|e)\. Answer [0-9]+$/gm)).getElement();
for (var i = 0; i < result.length; i++)
{
result[i].setAttributes(style);
}
}
else
{
//Do whatever. There is no element matched
}
}
在另一方面,正则表达式/^(a|b|c|d|e)\..*/gm
是指:
开头a OR b OR c OR d OR e
, .
,任何字符0次或更多次( .*
)。 g
标志意味着将继续后的首场比赛搜索。 所述m
标志意味着$
和^
可以分别匹配行的开始和线路的端部。
所以它会匹配这样的事情: a.anything
, b.66/qQ-.r...
等。
如果你想匹配像a. Answer 1
a. Answer 1
,你应该使用:
/^(a|b|c|d|e)\.\s.+\s[0-9]+$/gm
如果是要始终Answer
你可以使用:
/^(a|b|c|d|e)\.\sAnswer\s[0-9]+$/gm