sheet ข้อสอบ https://docs.google.com/spreadsheets/d/1_PQExpNMRu6ATNiLA_j96r_SrqieUzsIcPV-F-nzanA/edit?usp=sharing
//สร้าง folder เปล่า ใน drive 1 folder
//สร้าง sheet ตามรูปแบบ ลิงก์ที่แนบ และเพิ่มการแก้ไขสคริปต์
var myFolder = DriveApp.getFolderById('1UPaYjSyOALVNXDROYZjAohBXxzngJuRS'); // <<====== ID ของโฟลเดอร์ที่ เก็บ เท็มเพลต ข้อสอบ
var form_id = '1qGsu3bEXcJWkqV_ObZUgSRYryEZtbFN7ed_BhL7bZ58' // << สร้าง form ข้อสอบ และ เอา ID ของข้อสอบ ต้นฉบับ มาวาง
//--------------------------------------------------------------------------
var destinationFolder = '1VZDcPb4Sboe6AeSybO3-qNGPr-K9myI-'; // <<========= ID ของโฟลเดอร์ ที่ต้องการเก็บชุดข้อสอบ
var formName = 'แบบทดสอบคำศัพท์ ป.2 ชุดที่ 1'; // <<=========== ชื่อข้อสอบ
var items_score = 1;
//--------------------------------------------------------------------------
var question_req = 0;
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('สร้างข้อสอบ Random')
.addItem('จำนวนข้อสอบที่ต้องการ', 'showPrompt')
.addToUi();
}
function showPrompt() {
var ui = SpreadsheetApp.getUi();
var result = ui.prompt(
'โปรดระบุจำนวนข้อสอบที่เราต้องการ ',
'ไม่ควรเกินขจำนวนข้อสอบในคลัง',
ui.ButtonSet.OK_CANCEL);
// Process the user's response.
var button = result.getSelectedButton();
question_req = result.getResponseText();
if (button == ui.Button.OK) {
// User clicked "OK".
ui.alert('กดปุ่มตกลงเพื่อเริ่มสร้างข้อสอบให้คุณ \n โปรดตรวจสอบข้อสอบที่ folder ปลายทาง ใน drive ของท่าน');
random_quiz()
} else if (button == ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert('ยกเลิกแล้ว');
} else if (button == ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert('ปิดเมนู');
}
}
function random_quiz() {
var r;
var c;
var ans;
var item;
var content;
var choices =[];
var nchoices;
var correct;
var iscorrect;
var emailTo = [];
var question_num;
var quiz_bank_folder_id = myFolder.getId()
var form = DriveApp.getFileById(form_id).makeCopy(formName)
var id_copy_form = form.getId()
DriveApp.getFolderById(destinationFolder).addFile(form);
DriveApp.getFolderById(quiz_bank_folder_id).removeFile(form);
var form_quiz = FormApp.openById(id_copy_form);
var ss = SpreadsheetApp.getActive()
var sheet = ss.getSheets()[0];
question_num = sheet.getLastRow() - 1;
if(question_req>question_num) {
question_req=question_num;
}
var index = add_questions(question_num,question_req);
for(r = 0; r<question_req ; r++){
item = form_quiz.addMultipleChoiceItem();
item.setPoints(items_score);
content = sheet.getRange(index[r]+1,2).getValue();
item.setTitle(content);
nchoices = sheet.getRange(index[r]+1,3).getValue();
correct = sheet.getRange(index[r]+1,4).getValue();
for(c = 1; c<nchoices+1;c++){
iscorrect = (c==correct);
content = sheet.getRange(index[r]+1,c+4).getValue();
choices[c-1] = item.createChoice(content,iscorrect);
}
item.setChoices(choices);
}
Logger.log('สร้างข้อสอบเรียบร้อยแล้ว')
}
// ===========
function add_questions(question_num, question_req){
var index = [];
var ilist = [];
var i;
var n;
// ==========
for (i = 0; i < question_num; i++) {
ilist[i]=i+1;
}
// ========== สุ่มข้อ
i = 0;
while(i<question_req){
n = Math.floor(Math.random() * (question_num-1));
if(ilist[n]==n+1){
index[i]=n+1;
ilist[n]=-1;
i++;
}
}
return index;
}