2013-11-04 3 views
0

Google 문서에서 객관식 답변을 강조 할 Google Apps 스크립트를 만들려고합니다.복수 선택을 강조하는 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); 
    } 
} 

을하지만 그냥 날 "널 (null)의"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.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

+0

좋습니다. 그러나 내가 얻으려고했던 문제는'var result = text.findText (/^(a | b | c | d | e) \ .. */gm) .getElement();'행. 나는 정규 표현식 부분이나'.findText' 명령을 제대로 이해하지 못한다고 생각합니다. – derekantrican

+0

답변이 업데이트되었습니다. 너는 무엇을 찾고 싶니? – Manolo

+0

좋아요, 나는 모든 답 ('대답 1','대답 2'등)과 일치하기를 원했기 때문에 정규 표현식을'/^(a | b | c | d | e) \ . \ s. */gm'을 사용하여 마침표와 답장 텍스트 사이의 공백도 일치시킵니다 ('. *'로 '\ s'가 필요한지는 알 수 없습니다). 또한, 나는 당신이 제안한 것과 일치하도록 코드를 편집했고 (if 문으로), 여전히 같은 오류를 준다. (오류는'var result = text.findText (/^(a | b | c | d | e) \ .. */gm) .getElement();'). – derekantrican