1

Google ドキュメントで複数の選択肢の回答を強調表示する Google Apps Script を作成しようとしています。質問の例を次に示します。

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」を呼び出すことはできません」というメッセージが表示されます。

4

1 に答える 1

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 回以上 ( )始まり.*ます。gflag は、最初の一致後に検索を続行することを意味します。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

于 2013-11-04T20:08:33.203 に答える