Копирование элемента .getFeedbackForCorrect между формами викторин Google

Метод .duplicate() не работает между формами (насколько я понимаю), поэтому я написал быструю процедуру для копирования элементов с множественным выбором из одной формы в другую.

(Я делаю это, чтобы установить тесты в Classroom. У меня есть банки вопросов по отдельным темам в тестах для формирующего оценивания, и я хочу комбинировать случайные вопросы из них для итогового оценивания.)

Код, который я написал, отлично справляется с копированием вопросов, но не обратной связи. Это мой первый код GAS, приношу свои извинения!

TypeError: не удается найти функцию getFeedbackForCorrect в объекте Item. (строка 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);
}

person Peter Whitehead    schedule 21.05.2017    source источник
comment
Решил ли мой ответ проблему?   -  person Alan Wells    schedule 23.05.2017
comment
Спасибо, Сэнди - молодец !. Документация здесь немного неясна, но я думаю, что теперь я понимаю, как эти объекты структурированы.   -  person Peter Whitehead    schedule 30.05.2017


Ответы (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);
}
person Alan Wells    schedule 21.05.2017