งานวิชาการ · เริ่มก่อน
ระบบสร้างเกียรติบัตรอัตโนมัติ
กรอกข้อมูลใน Sheets แล้วสร้าง PDF จำนวนมากได้ในครั้งเดียว
เวลาสร้าง/อบรม: 1-2 ชม.
ความยาก: ง่าย
🎯 ผลลัพธ์และประโยชน์ที่ครูจะได้รับ
ลดเวลาทำเกียรติบัตรจากงานมือซ้ำ ๆ เป็นขั้นตอนตรวจชื่อและกดสร้างไฟล์
🛠️ เครื่องมือที่ใช้งานในระบบนี้
Google SheetsGoogle SlidesApps ScriptDrive
⚠️ ข้อควรระวังและข้อสังเกต
เหมาะกับข้อมูลที่ไม่อ่อนไหว เช่น ชื่อ-นามสกุลและกิจกรรม
📊 ขั้นตอนการทำงานของระบบ (Workflow)
- 1
เตรียมรายชื่อ
- 2
ออกแบบ template
- 3
ผูก placeholder
- 4
สร้าง PDF
- 5
เก็บไฟล์ใน Drive
Google Apps Script Code.js
/**
* ระบบสร้างเกียรติบัตรอัตโนมัติ (Automated Certificate Generator)
* พัฒนาโดย AKADEMOS (Stay Curious, Stay Inspired)
*/
const CONFIG = {
TEMPLATE_SLIDE_ID: "1XYxX114QZbEkGOQtfwzrKegJUm5ri3mpdygcWQMdPFQ",
FOLDER_ID: "1rg5oywKUvt7oWc6rpygbgMnmk_69aXbq",
SHEET_NAME: "รายชื่อ",
EMAIL_SUBJECT: "เกียรติบัตรจากการเข้าร่วมกิจกรรมของคุณ",
EMAIL_BODY: "สวัสดีครับ/ค่ะ\n\nยินดีด้วยที่คุณได้รับเกียรติบัตรจากการเข้าร่วมกิจกรรม ระบบได้สร้างและแนบเกียรติบัตร PDF ของคุณมาพร้อมกับอีเมลฉบับนี้แล้ว\n\nขอแสดงความนับถือ\nทีมงานจัดกิจกรรม",
SEND_EMAIL: false
};
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu("🎓 ระบบเกียรติบัตร")
.addItem("▶️ เริ่มสร้างเกียรติบัตร", "generateCertificates")
.addToUi();
}
function generateCertificates() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CONFIG.SHEET_NAME);
if (!sheet) {
SpreadsheetApp.getUi().alert(`ไม่พบแผ่นงานชื่อ "${CONFIG.SHEET_NAME}"`);
return;
}
const lastRow = sheet.getLastRow();
if (lastRow < 2) return;
const range = sheet.getRange(2, 1, lastRow - 1, 6);
const values = range.getValues();
let templateFile, targetFolder;
try {
templateFile = DriveApp.getFileById(CONFIG.TEMPLATE_SLIDE_ID);
targetFolder = DriveApp.getFolderById(CONFIG.FOLDER_ID);
} catch(e) {
SpreadsheetApp.getUi().alert("กรุณาตรวจสอบ TEMPLATE_SLIDE_ID และ FOLDER_ID");
return;
}
for (let i = 0; i < values.length; i++) {
const rowNum = i + 2;
const name = values[i][0].toString().trim();
const activity = values[i][1].toString().trim();
const dateVal = values[i][2];
const email = values[i][3].toString().trim();
const status = values[i][4].toString().trim();
if (!name || status === "สำเร็จ") continue;
let dateStr = dateVal instanceof Date ? Utilities.formatDate(dateVal, Session.getScriptTimeZone(), "d MMMM yyyy") : dateVal.toString();
try {
const newFile = templateFile.makeCopy(`Temp_${name}`, targetFolder);
const newSlideId = newFile.getId();
const presentation = SlidesApp.openById(newSlideId);
presentation.replaceAllText("{{name}}", name);
presentation.replaceAllText("{{activity}}", activity);
presentation.replaceAllText("{{date}}", dateStr);
presentation.saveAndClose();
const pdfBlob = newFile.getAs(MimeType.PDF).setName(`เกียรติบัตร_${name}.pdf`);
const pdfFile = targetFolder.createFile(pdfBlob);
newFile.setTrashed(true);
sheet.getRange(rowNum, 5).setValue("สำเร็จ");
sheet.getRange(rowNum, 6).setValue(pdfFile.getUrl());
} catch (error) {}
}
}📖 คู่มือการติดตั้งและใช้งานจริง (5 ขั้นตอน)
1
คัดลอกไฟล์ Google Sheets เทมเพลต และ Google Slides เทมเพลต ไปยังบัญชี Drive ของตนเอง
2
นำข้อมูลรายชื่อผู้เข้าอบรมไปใส่ใน Google Sheets ในชีตชื่อ 'รายชื่อ'
3
แก้ไข ID สไลด์เทมเพลตและโฟลเดอร์เก็บไฟล์ในตัวแปร CONFIG ของ Apps Script (ระบบใส่ค่าเริ่มต้นของบัญชีผู้รับงานให้แล้ว)
4
คลิกที่เมนู 'ระบบเกียรติบัตร' ด้านบนของ Google Sheets แล้วกด 'เริ่มสร้างเกียรติบัตร'
5
ระบบจะสร้าง PDF และบันทึกลิงก์เข้า Google Sheets อัตโนมัติ