8 ธ.ค. 2020 เวลา 05:49 • วิทยาศาสตร์ & เทคโนโลยี
การสร้างเกียรติบัตรจำนวนมากด้วย Google Sheets, Slide และ Apps Script
วันนี้เราจะแนะนำวิธีการสร้างเกียรติบัตรแบบง่ายๆ ให้กับผู้เข้าอบรม โดยใช้เครื่องมือ Google Sheets, Google Slide และ Google Apps Script ซึ่งในบทความนี้จะยกตัวอย่างการทำเกียรติบัตรวิชาหนึ่งให้ผู้เข้าอบรม 5 คน ซึ่งทุกคนจะได้ไฟล์เกียรติบัตรนามสกุล pdf ชื่อของตนเองเท่านั้น
ขั้นตอน
1. สร้างเทมเพลตเกียรติบัตรด้วย Google Slides
2. สร้างข้อมูลผู้ได้รับเกียรติบัตรด้วย Google Sheets
3. สร้างสคริปต์
4. รันสคริปต์ และตรวจสอบ
ขั้นตอนที่ 1. สร้างเทมเพลตเกียรติบัตรด้วย Google Slides
1.1 สร้างเกียรติบัตรโดยการสร้าง Google Slide มา 1 หน้า ออกแบบตามใจชอบ หรือเอาแบบผมก็ได้ ที่สำคัญตรงไหนจะให้ใส่ข้อมูลจาก Sheet ลงไปให้ทำเครื่อง {{ }} ในภาพตัวอย่างจะเป็น {{ชื่อ}} {{วันที่}} และ {{เลขที่}}
1.2 บันทึกชื่อไฟล์ตามใจชอบ ในตัวอย่างจะชื่อว่า “เกียรติบัตร How to use Google Classroom”
1.3 กลับไปหน้ารวม Google Slide ของตนเอง
1.4 ไปที่แกลเลอรี่เทมเพลตทั้งหมด
1.5 ส่งเทมเพลต ในนี้คือเกียรติบัตรที่เราสร้างขึ้นเมื่อกี้
1.6 กดเลือกเทมเพลตที่เพิ่มล่าสุดเมื่อกี้ ทำการคัดลอกเอา Tempate id เก็บไว้เพื่อมาใช้ในการเขียนสคริปต์
1.7 แนะนำให้สร้าง Folder ใน google drive และเอาไฟล์เกียรติบัตรที่ได้ทั้งหมดไว้ตรงนี้นะครับ พอสร้างเสร็จก็คัดลอก Folder id เก็บไว้เพื่อมาใช้ในการเขียนสคริปต์
ขั้นตอนที่ 2. สร้างข้อมูลผู้ได้รับเกียรติบัตรด้วย Google Sheets
2.1 สร้างไฟล์ Google Sheets ใหม่ขึ้นมา ตั้งชื่ออะไรก็ได้ แล้วทดลองใส่ข้อมูลตามภาพ ให้คัดลอก Sheet id เก็บไว้เพื่อใช้ในการเขียนสคริปต์
ขั้นตอนที่ 3. สร้างสคริปต์
3.1 พิมพ์หรือคัดลอก Script ตามนี้
function createCer() {
var dataRangeNotation = 'แผ่น1!A2:D6'; //ข้อมูลชื่อที่ต้องการทำใบประกาศ ไม่เอาส่วนหัว
var dataSpreadsheetId = '[sheet id]'; //Sheet id
var templateId = '[Slide Template id]'; //Slide Template id
var FolderId = '[Folder id]'; //Folder id ที่จะเก็บไฟล์เกียรติบัตรทั้งหมด
var presentationCopyId;
var sheet = SpreadsheetApp.openById(dataSpreadsheetId).getRange(dataRangeNotation);
var values = sheet.getValues();
var lastCols = sheet.activate().getLastColumn();
 
//เริ่มสร้างเกียรติบัตรตั้งแต่ row เริ่มต้นถึงสุดท้าย
for (var i = 0; i < values.length; ++i) {
var row = values[i];
var Num = row[0]
var Name = row[1];
var cDate = thaiDate(row[2]);
 
var Complate = row[3];
 
if (Complate != 'Complete'){ //ตรวจสอบว่าทำการสร้างเกียรติบัตรไปแล้วหรือยัง
var copyTitle = Name + ' How to use Google Classroom'; //ตั้งชื่อไฟล์
var copyFile = {
title: copyTitle,
parents: [{id: FolderId}]
};
copyFile = Drive.Files.copy(copyFile, templateId); //สร้างไฟล์ Slide จาก Template ที่ทำขึ้น
 
var presentationCopyId = copyFile.id; //Slide id ที่สร้างล่าสุด
 
// ทำการ merge ชื่อจาก sheet ลงใน slide ตรงคำว่า {{เลขที่}} {{ชื่อ}} {{วันที่}}
requests = [{
replaceAllText: {
containsText: {
text: '{{เลขที่}}',
matchCase: true
},
replaceText: Num
}
},{
replaceAllText: {
containsText: {
text: '{{ชื่อ}}',
matchCase: true
},
replaceText: Name
}
},{
replaceAllText: {
containsText: {
text: '{{วันที่}}',
matchCase: true
},
replaceText: cDate
}
}];
 
var result = Slides.Presentations.batchUpdate({
requests: requests
}, presentationCopyId);
 
var numReplacements = 0;
result.replies.forEach(function(reply) {
numReplacements += reply.replaceAllText.occurrencesChanged; //แก้ไขทับไฟล์ที่สร้างขึ้นเมื่อกี้เลย
});
 
 
//ทำการ convert จากไฟล์ slide ที่สร้างขึ้นเมื่อกี้เป็น pdf
var file = DriveApp.getFileById(presentationCopyId).getBlob();
DriveApp.getFolderById(FolderId).createFile(file);
 
 
//บันทึกใน sheet ว่าส่งแล้ว
sheet.getCell(i+1, lastCols).setValue("Complete");
 
}
}
}
function thaiDate(cDate) {
var month = Utilities.formatDate(cDate, "GMT+7", "MM");
var day = Utilities.formatDate(cDate, "GMT+7", "d");
var year = Utilities.formatDate(cDate, "GMT+7", "YYYY");
var thaiMonth;
switch (month){
case "01" :
thaiMonth = "มกราคม";
break;
case "02" :
thaiMonth = "กุมภาพันธ์";
break;
case "03" :
thaiMonth = "มีนาคม";
break;
case "04" :
thaiMonth = "เมษายน";
break;
case "05" :
thaiMonth = "พฤษภาคม";
break;
case "06" :
thaiMonth = "มิถุนายน";
break;
case "07" :
thaiMonth = "กรกฎาคม";
break;
case "08" :
thaiMonth = "สิงหาคม";
break;
case "09" :
thaiMonth = "กันยายน";
break;
case "10" :
thaiMonth = "ตุลาคม";
break;
case "11" :
thaiMonth = "พฤศจิกายน";
break;
case "12" :
thaiMonth = "ธันวาคม";
break;
}
var tDate = day + " " + thaiMonth + " " + year;
return tDate;
}
3.2 แก้ไขโดยการนำ id ต่างๆที่คัดลอกไว้ก่อนหน้านี้ นำมาใส่ แทน [sheet id] [Slide Template id] และ [Folder id] ดังตัวอย่างตามภาพ
2
3.3 เปิดบริการขั้นสูง Google
เลือกเปิด Drive API, Google Sheets API และ Google Slides API
ขั้นตอนที่ 4. รันสคริปต์ และตรวจสอบ
4.1 เลือกฟังชัน createCer แล้วกด run
4.2 รอให้สคริปต์ทำงาน
4.3 เมื่อสคริปต์ทำงานเสร็จ ใน Sheet แถวที่สร้างเกียรติบัตรเสร็จแล้วจะขึ้นว่า Complete
4.4 Folder ใน Google Drive ของเราจะมีไฟล์เกียรติบัตรถูกสร้างขึ้นมาใหม่
4.5 เมื่อเปิดดู ไฟล์ Pdf หรือ Slide เกียรติบัตรนั้น จะต้องมีข้อมูลตรงกัน และถูกต้อง
เท่านี้เราก็ได้เกียรบัตรที่เราต้องการแล้วครับ
โฆษณา