• ครูนรินทร์ ขอขอบคุณทุกท่าน ที่นำไปใช้ แล้วให้ ข้อแนะนำ

  • ดร.สมัต อาบสุวรรณ์ รองผู้อำนวยการ สพป. ชัยภูมิ 1 https://www.facebook.com/krumat

  • https://www.facebook.com/babies.sci

  • กดติดตามข่าวสาร https://www.facebook.com/krunarinanongchai

  • กดติดตามความรู้ใหม่บนช่อง Youtube ที่ https://www.youtube.com/channel/UCMVdjDFb18uSAjkX855avBg

  • ครูนรินทร์ ไม่ได้เป็น Programmer อาชีพ เป็น ครูผู้สอน ธรรมดา ได้เรียนรู้ตาม อินเทอร์เน็ต และ ได้ทดสอบจำนวนหนึ่ง แล้ว ใช้ได้

  • หากพบข้อบกพร่อง โปรดแจ้ง ด้วย หากพบวิธีการเขียนแบบใหม่ ที่ดีกว่าเดิม ก็ แจ้ง ด้วย ครับ

"script เดิม"


หากสนใจ "script เพิ่มข้อมูลโรงเรียนได้"
คลิก

เบื้องต้นเหมาะสำหรับการใช้ในระดับโรงเรียน


// คลุม ส่วนด้านล่างนี้ copy ไปวางใน Google Script และ โปรดให้ เครดิต อย่าลบทิ้งเลย

// โค้ดนี้ พัฒนาโดย ครูนรินทร์ อนงค์ชัย ครู โรงเรียนเทพอุดมวิทยา สพม. 33 อ.สังขะ จ.สุรินทร์

// ปรับปรุ่ง ครั้งที่ 1 เมื่อ 16/04/2563 ตามคำแนะนำคุณครู มนตรี อกอุ่น โรงเรียนมัธยมทับทิมสยาม 04 จ.สุรินทร์

// ปรับปรุ่ง ครั้งที่ 2 เมื่อ 16/04/2563 ตามคำแนะนำคุณครู สุธาสินี บูรณะศิริศิลป์ โรงเรียนอนุบาลวัดสระแก้ว

// ปรับปรุง ครั้งที่ 3 เมื่อ 18/04/2563 ชื่อไฟล์ เป็น ชื่อเดียวกับ ชื่อคนทำข้อสอบ

// ปรับปรุง ครั้งที่ 4 เมื่อ 20/04/2563 เปลี่ยนเลขอาราบิกเป็นตัวเลขไทย
// ปรับปรุง ครั้งที่ 5 เมื่อ 23/04/2563 เพิ่ม ชื่อไฟล์ เป็น ชื่อเดียวกับ ชื่อคนทำข้อสอบ ปรับความแม่นยำ

// ปรับปรุง ครั้งที่ 6 เมื่อ 23/04/2563 เพิ่ม ปรับความแม่นยำ และ รวดเร็ว โดย ครูยุทธนา แม่นผล สังขะ สุรินทร์


// 1. google slide template ID =====================

var TEMPLATE_ID = ' ID Google Slide ' //เอามาจาก google slide ที่เราออกแบบเกียรติบัตรไว้


// 2. ระบุคะแนนผ่าน ==================================

var PASS_PERCENT = 70;


// 3. สร้าง email====================================

var EMAIL_SUBJECT = 'ขอแสดงความยินดี คุณผ่านการการอบรม'


// 4. เนื้อหาในอีเมล์

var EMAIL_BODY = 'ยินดีด้วย คุณสอบผ่าน การอบรม หากท่านมีปัญหาสอบถามเพิ่่มที่ https://www.facebook.com/krunarinanongchai https://www.youtube.com/channel/UCMVdjDFb18uSAjkX855avBg/videos?view_as=subscriber'


//=======================นอกนั้นถ้าไม่ถนัด ไม่ต้องแก้ไข นะครับ==========================


//============================================================================


function getGoogleFormQuizScore() {


var sum_score = 0;


var total_score = 0;


var emailTo = [];


var form = FormApp.getActiveForm();


var formResponses = form.getResponses();


//=========== รับค่า คำตอบ ชื่อของ ผู้ทำข้อสอบ ====================


for (var i = 0; i < formResponses.length; i++) {


var formResponse = formResponses[formResponses.length-1];


}

var itemResponses = formResponse.getItemResponses();


var itemResponse = itemResponses[0];


var user_name = itemResponse.getResponse(); //ตำแหน่ง ที่ 1

//=============== รัน เลขที่เกียรติบัตร ให้มี เลข 0 นำหน้า ========================

var form_submit = formResponses.length + 1;

var str = "" + form_submit;

var pad = "000000"; //จำนวนหลักที่คาดว่ามีคนเข้าใช้งาน

var running_id = pad.substring(0, pad.length - str.length) + str + "/" + getThaiYear();

// =================== เอาข้อมูลทั้งหมด ไป แทนที่ข้อความ ใน google slide ==================

//======================== ดึงข้อมูลชื่อคนสอบ อีเมล์


var response = form.getResponses().reverse()[0];


var email_back_to = response.getRespondentEmail(); // เอาไปใส่ ใน code ส่งอีเมล์


Logger.log(email_back_to);


var items = form.getItems();


for (var i=0; i<items.length; i++) {


var question = items[i];


// =========== ดึงข้อมูลชื่อคนสอบ และ ดึงข้อมูลตำแหน่ง แก้ไข 20/04/2020


var name_question = items[0];


var position_question = items[1];


// ======== ดึงข้อมูล ชื่อโรงเรียน 24/04/2563


// var school_question = items[2]


// ===========


var qTitle = question.getTitle();


var qType = question.getType();


var responseForItem = response.getResponseForItem(question); // === แก้ไข 20/04/2020


// =========== ดึงข้อมูลชื่อคนสอบ 20/04/2020


var name_responseForItem = response.getResponseForItem(name_question);


var name_answer = name_responseForItem.getResponse();


// =========== ดึงข้อมูลตำแหน่ง แก้ไข 20/04/2020


var position_responseForItem = response.getResponseForItem(position_question);


var position_answer = position_responseForItem.getResponse();


// =========== ดึงข้อมูล โรงเรียน แก้ไข 24/04/2020


// var school_responseForItem = response.getResponseForItem(school_question);


// var school_answer = school_responseForItem.getResponse();


//=========ขั้นตอนเก็บค่าคะแนน=========================================


var answer = responseForItem ? responseForItem.getResponse() : null;


var item = castQuizItem_(question, qType);


if (item && typeof item.getPoints === "function") {


var maxScore = item.getPoints();


var gradableResponseForItem = response.getGradableResponseForItem(question);


var score = gradableResponseForItem.getScore();


Logger.log(String(qType), qTitle, answer, maxScore, score );


sum_score = sum_score + score;


total_score = total_score + maxScore;


}


}


var sum_total = sum_score*100/total_score; //======= รวมคะแนน ====================


var percentage = sum_total.toFixed(2);


if(percentage == 100){


percentage = sum_total.toFixed(0); // ถ้าคะแนนเป็น 100 ไม่ต้อมี .00 ==================


}


if (percentage >= PASS_PERCENT && email_back_to == response.getRespondentEmail()){


// ========== copy Slide ====== เท็มเพลตเกียรติบัตรที่สร้างด้วย googl slide


var file = DriveApp.getFileById(TEMPLATE_ID).makeCopy()


var copyFile = file.makeCopy('เกียรติบัตรผ่านการอบรมของ '+user_name);


var copyId = copyFile.getId()


var copyDoc = SlidesApp.openById(copyId);


var slides = copyDoc.getSlides();


var templateSlide = slides[0];


var shapes = templateSlide.getShapes();

//--------------------------------------------------------------------------

Logger.log("สวัสดีครับ ",name_answer,"ตำแหน่ง",position_answer,"ที่อยู่อีเมล์", email_back_to);

Logger.log("ข้อสอบนี้มีคะแนน คะแนนเต็ม =",total_score,"คะแนนที่ได้ ",sum_score, "คิดเป็น ร้อยละ", percentage);

Logger.log("ผลการสอบ", "คุณผ่าน ขอแสดงความยินดีด้วยครับ");


shapes.forEach(function (shape) {

shape.getText().replaceAllText("{{name}}", name_answer);


shape.getText().replaceAllText("{{position}}", position_answer);


//shape.getText().replaceAllText('{{school}}', school_answer);


shape.getText().replaceAllText("{{email}}", email_back_to);


shape.getText().replaceAllText("{{score}}", thaiNumber(percentage));


shape.getText().replaceAllText("{{id}}", thaiNumber(running_id));


shape.getText().replaceAllText("{{date}}", getThaiDate());

shape.getText().replaceAllText('{{month}}',getThaiMonth());

shape.getText().replaceAllText('{{year}}', getThaiYear());

});


//รอให้ การทำงาน ข้อต้น เสร็จ/ตรวจสอบว่า ทำงานเสร็จแล้ว ให้ทำงาน ลำดับต่อไป =====================


copyDoc.saveAndClose();


// ========== สร้างไฟล์ pdf


var newFile = DriveApp.createFile(copyFile.getAs("application/pdf"));


//===============คำสั่ง ส่งอีเมล์ ==== ถ้าผ่านเก็บสำเนา ถ้าไม่ผ่าน ไม่เก็บสำเนา ยังไม่แก้ ===============

MailApp.sendEmail(email_back_to, EMAIL_SUBJECT, EMAIL_BODY, {attachments: [newFile],});

} else {

// ถ้าไม่ผ่าน ไม่ต้องสร้าง pdf

//copyDoc.saveAndClose();

MailApp.sendEmail( email_back_to, "ผลการสอบของคุณ", "ขอแสดงความเสียใจ คุณสอบไม่ผ่าน");

}


// ================ ขั้นตอน พิจารณา ลบไฟล์สำเนามาทิ้ง ======================================


//ไฟล์ google slide สำเนาต้นฉบับ ถ้าไม่ต้องการ ลบไฟล ใส่ เครื่องหมาย // คอมเมนต์ ไว้หน้า code บรรทัดต่อไป


file.setTrashed(true);


// ถ้าไม่ต้องการ ลบไฟล์ pdf ให้ ใส่ เครื่องหมาย // คอมเมนต์ ไว้หน้า code บรรทัดต่อไป


newFile.setTrashed(true);


//ไฟล์ google slide สำเนาต้นฉบับที่ถูกแทนที่ ด้วยข้อความใหม่ ถ้าไม่ต้องการ ลบไฟล ใส่ เครื่องหมาย // คอมเมนต์ ไว้หน้า code บรรทัดต่อไป


copyFile.setTrashed(true);


}


//================เปลี่ยนวันที่เป็นแบบไทย=======================================


function getThaiDate() {

var date = new Date();


var DATE = date.getDate();

return thaiNumber(DATE);

}


function getThaiMonth() {

var date = new Date();


var DATE = date.getDate();


var MONTH = ["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"];


var THAI_MONTH = MONTH[date.getMonth()];

return THAI_MONTH

}


//==============================เปลี่ยนปี ค.ศ.เป็น พ.ศ.==============

function getThaiYear() {

var date = new Date();

var YEAR = date.getFullYear();


var THAI_YEAR = YEAR + 543;

return thaiNumber(THAI_YEAR);

}


// ============ ฟั่งชั่นเปลี่ยน เลขอาราบิก เป็น เลขไทย =========================


function thaiNumber(num){


var array = {"1":"๑", "2":"๒", "3":"๓", "4" : "๔", "5" : "๕", "6" : "๖", "7" : "๗", "8" : "๘", "9" : "๙", "0" : "๐"};


var str = num.toString();


for (var val in array) {


str = str.split(val).join(array[val]);

}

return str;

}


// ==== ฟังก์ชั่น ตรวจสอบว่า ได้เฉพาะ ข้อสอบแบบ ตัวเลือก เท่านั้น ข้อสอบแบบอื่น จะไม่นำคะแนน มารวม ===================


function castQuizItem_(item, itemType) {


if (itemType === FormApp.ItemType.MULTIPLE_CHOICE) {


return item.asMultipleChoiceItem();


} if (itemType === FormApp.ItemType.TEXT) {


return item.asTextItem();

}

return null;

}

Script มี การ ปรับเรื่อยๆ เพื่อความสมบูรณ์ โปรดเข้ามาตรวจสอบ อย่างต่อเนื่อง