在 Google 测验表格之间复制项目 .getFeedbackForCorrect

Posted

技术标签:

【中文标题】在 Google 测验表格之间复制项目 .getFeedbackForCorrect【英文标题】:Copying item .getFeedbackForCorrect between Google quiz forms 【发布时间】:2017-10-21 00:38:57 【问题描述】:

.duplicate() 方法在表单之间不起作用(据我所见),因此我编写了一个快速例程将多项选择项从一个表单复制到另一个表单。

(我这样做是为了在Clas-s-room 中设置测验。我在测验中针对单个主题有大量问题用于形成性评估,并希望将这些随机问题组合起来进行总结性评估。)

我编写的代码可以很好地复制问题,但不能复制反馈。这是我的第一个 GAS 代码,非常抱歉!

TypeError:在对象Item 中找不到函数getFeedbackForCorrect。 (第 32 行,文件“代码”)

function copyMultipleChoiceItem(item1, item2) 
//  copies MC question item1 to item2 - tested PDW 17/05/20
//  copy of feedback not working
//
//  basic question items
    item2.setTitle(item1.getTitle());
    item2.setPoints(item1.asMultipleChoiceItem().getPoints());
    item2.setRequired(item1.asMultipleChoiceItem().isRequired());
    item2.setHelpText(item1.getHelpText());
//  the choices
    var choices = item1.asMultipleChoiceItem().getChoices();
    for (var i = 0; i < choices.length; i++) 
        item2.createChoice(choices[i].getValue(),choices[i].isCorrectAnswer());
    
    item2.setChoices(choices);
//  the feedback and links - cannot get this to work!
    var feedback1 = item1.getFeedbackForCorrect();
    var feedback2 = FormApp.createFeedback()
        .setDisplayText(feedback1.getText());
//  then do list of URLs
    item2.setFeedbackForCorrect(feedback2);

【问题讨论】:

我的回答解决问题了吗? 谢谢桑迪 - 太棒了!这里的文档有点不清楚,但我想我现在已经掌握了这些对象的结构。 【参考方案1】:

您需要将item1 作为多项选择项。 getFeedbackForCorrect 方法不适用于item。您可以为该项目创建一个新变量作为多项选择项。

var itemAsMultipleChoice;

itemAsMultipleChoice = item1.asMultipleChoiceItem();//Get item as multiple choice item

然后使用新的itemAsMultipleChoice变量;

var feedback1 = itemAsMultipleChoice.getFeedbackForCorrect();

这是整个函数:

function copyMultipleChoiceItem(item1, item2) 
//  copies MC question item1 to item2 - tested PDW 17/05/20
//  copy of feedback not working
//
//  basic question items
    var itemAsMultipleChoice;

    Logger.log('item1: ' + item1)

    itemAsMultipleChoice = item1.asMultipleChoiceItem();

    item2.setTitle(item1.getTitle());
    item2.setPoints(item1.asMultipleChoiceItem().getPoints());
    item2.setRequired(item1.asMultipleChoiceItem().isRequired());
    item2.setHelpText(item1.getHelpText());
//  the choices

    var choices = item1.asMultipleChoiceItem().getChoices();
    for (var i = 0; i < choices.length; i++) 
        item2.createChoice(choices[i].getValue(),choices[i].isCorrectAnswer());
    
    item2.setChoices(choices);

    var feedback1 = itemAsMultipleChoice.getFeedbackForCorrect();

    var feedback2 = FormApp.createFeedback()
        .setDisplayText(feedback1.getText());
//  then do list of URLs
    item2.setFeedbackForCorrect(feedback2);

【讨论】:

以上是关于在 Google 测验表格之间复制项目 .getFeedbackForCorrect的主要内容,如果未能解决你的问题,请参考以下文章

Google 表格/AppScript - 将数据从一张表格复制到另一张表格

如何使用 Google 电子表格上的公式复制字符串并附加数字后缀?

我可以随机化 MultipleChoiceItem 中的项目吗?

像性能一样复制 Google 表格(handsontable)

Apps 脚本 - 在 Google 表格上复制“将图像放入选定的单元格”

将数据从一个电子表格复制到另一个 Google 表格