【问题标题】:Compare a list of words in a spreadsheet with 'highlighted' words in a Google Doc将电子表格中的单词列表与 Google 文档中“突出显示”的单词进行比较
【发布时间】:2014-02-27 19:48:41
【问题描述】:

在深入研究“如何”之前,我正在寻找“这可能”的答案。

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

如果是,是否可以生成报告来告诉我哪些“答案关键字”字词在 Google 文档中“未”突出显示?

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

【问题讨论】:

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


    【解决方案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("Planets Quiz") 等,但我将把这些留给你来决定。

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

    【讨论】:

    • 谢谢!乍一看,这看起来“非常接近”我正在寻找的东西。您是否知道“仅当”它们被突出显示时,您是否可以使用答案键来识别文档中的单词?我基本上想忽略文本文档中的所有单词“除了”突出显示的单词。
    • 我假设学生正在上交“未突出显示”的文档,因此脚本会检查答案键,并根据该术语的答案键单元格的背景颜色为单词着色)。然后它匹配并计算该特定颜色的频率,忽略所有其他单词(因为它在该点寻找颜色,而不是单词)。您可能会遇到麻烦的是多字答案,但我假设您可以根据键中的正则表达式检查元素组合(以考虑空格)。但是,至于您的问题,答案是肯定的(如果我理解您的要求正确的话)。
    • 如果它回答了您的问题,您介意接受这个答案吗?谢谢!
    猜你喜欢
    • 2020-11-07
    • 2019-04-27
    • 1970-01-01
    • 2012-11-07
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多