谷歌Apps脚本突出选择题(Google Apps Script to highlight mult

2019-10-18 21:40发布

我试图做一个谷歌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。

Answer 1:

你是不是期待一个没有匹配的结果。 试试这个。

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. Answer 1 ,你应该使用:

/^(a|b|c|d|e)\.\s.+\s[0-9]+$/gm

如果是要始终Answer你可以使用:

/^(a|b|c|d|e)\.\sAnswer\s[0-9]+$/gm



文章来源: Google Apps Script to highlight multiple choice