2013-11-04 80 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

相關問題