2013-11-04 34 views
0

我正在尝试制作Google Apps脚本,该脚本将突出显示Google文档中的多项选择答案。下面是一个例子问题:Google 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。

回答

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.anythingb.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

+0

好的,这是有道理的。但我想要解决的问题是我认为我使用'var result = text.findText(/ ^(a | b | c | d | e)\ .. */gm ).getElement();'行。我不认为我正确理解正则表达式部分或'.findText'命令 – derekantrican

+0

回答更新。你想匹配什么? – Manolo

+0

好吧,我希望它匹配所有答案('a。Answer 1','b。Answer 2'等),所以我编辑正则表达式为'/ ^(a | b | c | d | e)\ 。\ s。*/gm',这样在句号和回答文本之间的空格也是匹配的(不知道'\ s'是否需要,尽管用'。*')。此外,我编辑代码来匹配你的建议(用if语句),它仍然给我同样的错误(它的错误行是'var result = text.findText(/ ^(a | b | c | d | e)\ .. */gm).getElement();')。 – derekantrican

相关问题