-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.js
89 lines (69 loc) · 2.4 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
function main() {
var quiz = getQuizData(SHEET_ID);
createForm(quiz, FORM_ID);
}
function createForm(quiz, formId) {
// create a new form or open an existing one
if (formId == null) {
var form = FormApp.create(quiz.title)
} else {
var form = FormApp.openById(formId);
}
form.setTitle(quiz.title)
.setDescription(quiz.description)
.setIsQuiz(true)
.setProgressBar(true);
// delete old items
var oldItems = form.getItems();
while(oldItems.length > 0){
form.deleteItem(oldItems.pop());
}
// create new pages and questions
var pageNumber = 1
quiz.pages.forEach(function (page) {
if (pageNumber > 1) {
//add new page to quiz
form.addPageBreakItem().setTitle(page.title);
}
//add questions to quiz page
page.questions.forEach(function (question) {
var questionItem = form.addCheckboxItem();
questionItem.setTitle(question.text)
.setPoints(question.points ? question.points : 0)
.setRequired(question.points ? true : false);
addAnswersToQuestionItem(question.choices, questionItem);
if (question.feedback.lenght !== 0) {
addFeedbackItemToQuestionItem(question.feedback, questionItem);
}
});
pageNumber += 1
});
//set form response destination
form.setDestination(FormApp.DestinationType.SPREADSHEET, SHEET_ID);
Logger.log('Form URL: ' + form.shortenFormUrl(form.getPublishedUrl()));
}
function addAnswersToQuestionItem(choices, questionItem) {
var createChoicesArray = choices.map(function (choice) {
return questionItem.createChoice(choice.text, choice.isCorrect);
})
questionItem.setChoices(createChoicesArray);
}
function addFeedbackItemToQuestionItem(feedback, questionItem) {
if (feedback.link == null || feedback.link === '') {
feedback.link = DEFAULT_FEEDBACK_LINK? DEFAULT_FEEDBACK_LINK : ''
}
if (feedback.correct != null && feedback.correct !== '') {
var feedbackOnCorrectItem = FormApp.createFeedback()
.setText(feedback.correct)
.addLink(feedback.link)
.build();
questionItem.setFeedbackForCorrect(feedbackOnCorrectItem);
}
if (feedback.incorrect != null && feedback.incorrect !== '') {
var feedbackOnIncorrectItem = FormApp.createFeedback()
.setText(feedback.incorrect)
.addLink(feedback.link)
.build();
questionItem.setFeedbackForIncorrect(feedbackOnIncorrectItem);
}
}