我正在尝试制作Google Apps脚本,以突出Google文档中的多项选择答案。这是一个示例问题:
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“of null”。
答案 0 :(得分:0)
您不期待没有匹配的结果。试试这个。
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|b|c|d|e)\.\s.+\s[0-9]+$/gm
如果它总是Answer
你可以使用:
/^(a|b|c|d|e)\.\sAnswer\s[0-9]+$/gm