【问题标题】:How to create Google Form Quiz using Google Apps Script or GAS?如何使用 Google Apps 脚本或 GAS 创建 Google 表单测验?
【发布时间】:2020-03-12 01:58:21
【问题描述】:

是否可以使用 GAS 从电子表格上的问题和答案列表中创建测验表格? 我正在为英语学习者做一个单词测试,测试者被要求为每个问题输入一个答案。 我创建了一个包含多个问题或单选按钮的测验...,但我无法将电子表格中的 TEXT 答案导入 TEXT 类型的测验。

我的脚本在下面...

function myFunction() {
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
 var range = ss.getDataRange(); 
 var data = range.getValues();
 var numberRows = range.getNumRows();
 var numberColumns = range.getNumColumns();
 var firstRow = 1;
 var form = FormApp.openById('');

 for(var i=0;i<numberRows;i++){
  var questionType = data[i][0]; 
  if (questionType==''){
     continue;
  }
  else if(questionType=='TEXT'){
   form.addTextItem()
     .setTitle(data[i][1]) 
     .setHelpText(data[i][2])
     .setRequired(true);
  } 

【问题讨论】:

  • 能否提供I have been not able to import TEXT answers from spreadsheets to the TEXT-type quiz.的详细信息?
  • 感谢您的快速回复。我可以使用 Google Apps 脚本 (GAS) 从带有问题(和答案键)的电子表格创建一个测验表格,但我不知道如何设置答案(表格中的项目)和表格上正确答案的分数.
  • 感谢您的回复。我认为提供您的脚本将帮助用户思考问题和解决方案。当然,请删除您的个人信息。
  • 你是对的。我在上面添加了我的脚本。希望它可以帮助其他用户。谢谢。
  • 感谢您的回复和补充信息。我注意到已经发布了答案。我认为它会解决您的问题。

标签: google-apps-script google-forms google-form-quiz


【解决方案1】:
  1. 查看文档sample
  2. 了解它的工作原理后,首先添加addTextItem()
  3. 根据您的工作表/需求调整它

示例:

  • 我在 A 列上有以下问题列表:

  • 现在我想将这些问题转换成这种形式:

  • 您应该根据需要调整的源代码:
function convertToForm(){

  const ss = SpreadsheetApp.getActive().getActiveSheet();
  const questionList = ss.getRange("A1:A7").getValues();

  const form = FormApp.create('New Form');

  questionList.forEach( (question) => { 
    const item = form.addTextItem();
    item.setTitle(question[0])
  })

  // press Ctrl+Enter to see form urls
  Logger.log('Published URL: ' + form.getPublishedUrl());
  Logger.log('Editor URL: ' + form.getEditUrl());

}

参考:

【讨论】:

【解决方案2】:

当 Google 终于让 GAS 发生这种情况时,我欣喜若狂。查看this Google blog 关于使用 GAS 创建测验的信息。各个问题的脚本如下所示。

  // Make a 10 point question and set feedback on it
  var item = FormApp.getActiveForm().addCheckboxItem();
  item.setTitle("What flavors are in neapolitan ice cream?");
  item.setPoints(10);
  // chocolate, vanilla, and strawberry are the correct answers
  item.setChoices([
    item.createChoice("chocolate", true),
    item.createChoice("vanilla", true),
    item.createChoice("rum raisin", false),
    item.createChoice("strawberry", true),
    item.createChoice("mint", false)
  ]);

【讨论】:

  • 感谢您的回复。但是,我正在做的测验需要“简答”,其中不包括多项选择或单选按钮之类的东西。我刚刚将我拥有的脚本添加到我的查询部分以供参考。无论如何,再次感谢您。
  • Google 似乎没有添加 setAnswerKey 的功能。我能想到的唯一解决方法是打开手动成绩审查,在表单中创建一个带有“答案键”项目的列,在提交时在表单中添加一个脚本,以便每次有人获得最后一个回复提交,然后根据答案键列手动检查这些响应,并使用 form.getResponse().getResponseForItem().setScore(score); 更改该响应项的分数。有点复杂,但可以做到
  • @Jescanellas 在stackoverflow.com/questions/61629776/… 中发布了一个未解决的问题。如果这对你和其他老师一样重要,请给它加星标。 issuetracker.google.com/117437423
  • 我教 - 这将非常有用。我们还需要从脚本中设置表单的所有设置。最好为包含响应的工作表命名 - 也许表单的名称不仅仅是表单响应和序列号。进入表单、设置设置和重命名响应表需要时间,而且时间非常紧缺。
猜你喜欢
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多