将电子表格中的单词列表与Google文档中的“突出显示”单词进行比较

时间:2014-02-27 19:48:42

标签: google-apps-script google-sheets google-drive-api google-docs

在我深入研究“怎么做”之前,我正在寻找“这是可能的”答案。

是否可以将Google电子表格(答案键)中的字词列表与Google文档中的“突出显示”字词进行比较?

如果是,可以生成一份报告,告诉我Google文档中哪些“回答键”字样未突出显示?

我是一名高中老师,我正在寻找一种方法来评估大量的学生作业,看看他们是否确定了关键术语。在我尝试构建它之前,我想知道这是否可以通过Google AppScript“实现”。

1 个答案:

答案 0 :(得分:1)

是的,它可以,而且我已经为你做过了:D。您可以在此处找到包含相关示例文件的文件夹:https://drive.google.com/folderview?id=0B_5rNbCI5MM9eXI2M005WVR1SUU&usp=sharing以及此脚本如何引用学生的文档提交和答案密钥。

function findAnswersFromKey(){
  var fileId = '1nI4rIvexA87s0eRmPUTJWxDtVxyx8qZ9nwQUKiK6Q4U';
  var doc = DocumentApp.openById(fileId);
  var ss = SpreadsheetApp.openById('1oikQnTcTx0KnCiwiy-pEUz9HLwLBh6ND4Xpo36xNS9o');
  var sheet = ss.getSheetByName('Planets Quiz Key');
  var answerRange = sheet.getRange(2,1,8,1);
  var targetAnswers = answerRange.getValues();
  Logger.log(targetAnswers);
  for (var i = 0; i < targetAnswers.length; i++){
    var target = targetAnswers[i];
    Logger.log(target);
    var targetBackground = sheet.getRange(i+2,1,1,1).getBackground();
    Logger.log(targetBackground);
    var answerCount = 0;
    var bodyElement = doc.getBody();
    var searchResult = bodyElement.findText(target);
    while (searchResult !== null) {
      var thisElement = searchResult.getElement();
      var thisElementText = thisElement.asText();
      thisElementText.setBackgroundColor(searchResult.getStartOffset(), searchResult.getEndOffsetInclusive(),targetBackground);
      // search for next match
      searchResult = bodyElement.findText(target, searchResult);
      answerCount++;
      Logger.log(answerCount);
    }
    sheet.getRange(i+2,2,1,1).setValue(answerCount);
  }
  var studentId = DriveApp.getFileById(fileId).getOwner().getEmail();
  sheet.getRange(1,2,1,1).setValue(studentId+"'s Quiz Answer Count");
}

有多种方法可以集成此解决方案,例如UiApp上传转换为google文档的.docx文件,folder.find(“行星测验”)等,但我会留下这些你决定。

我使用getBackground()和setBackground方法来查找与答案键匹配的文本元素(单词)。我还计算了匹配元素,以便您可以看到每个引用的次数。您会注意到文档中没有讨论过两个行星,并且计数为0。