Google Apps Script สร้างเกียรติบัตร

Google Apps Script สร้างเกียรติบัตรอัตโนมัติจาก Google Form


1. เตรียมไฟล์ที่จำเป็น

1.1 สร้าง Google Form สำหรับเก็บข้อมูล

  • สร้าง Google Form สำหรับให้ผู้ใช้กรอก เช่น ชื่อ-นามสกุล, อีเมล, คะแนน ฯลฯ
  • หัวข้อที่แนะนำ:
    • ชื่อผู้รับ (กรอกชื่อเต็ม)
    • อีเมล (สำหรับส่งเกียรติบัตร)
    • คะแนน หรือ คำถามแบบประเมิน (ตามลักษณะของกิจกรรม)

1.2 สร้าง Google Slides Template สำหรับเกียรติบัตร

  • สร้างใบประกาศเกียรติบัตรใน Google Slides
  • ใส่ข้อความที่ต้องการแสดงในทุกใบ เช่น:
    • “ขอมอบเกียรติบัตรฉบับนี้ให้แก่ <<ชื่อ>>”
    • วันที่และรายละเอียดอื่น ๆ
  • ใช้ชื่อในแบบนี้: <<ชื่อ>>, <<คะแนน>>, <<วันที่>> สำหรับการแทนที่ใน Google Apps Script

1.3 สร้าง Google Sheets สำหรับบันทึกคำตอบ

  • เมื่อสร้าง Google Form เสร็จแล้ว ให้ไปที่ Responses > Google Sheets เพื่อลิงก์คำตอบที่กรอกในแบบฟอร์ม

2. เขียน Google Apps Script เพื่อสร้างเกียรติบัตร

2.1 เปิด Google Sheets ที่เก็บคำตอบ

  1. ไปที่ Extensions > Apps Script จาก Google Sheets
  2. เขียนสคริปต์ใหม่โดยใช้โค้ดนี้:

javascript

function createCertificate() {
  // 1. เปิด Google Sheets ที่มีข้อมูลคำตอบ
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  
  // 2. เปิด Google Slides Template (ต้องใส่ ID ของไฟล์)
  var templateId = 'your-google-slides-template-id'; // เปลี่ยน ID ของไฟล์ Google Slides ของคุณ
  var slides = SlidesApp.openById(templateId);

  // 3. ลูปผ่านแต่ละแถวใน Google Sheets (เริ่มจากแถวที่ 2 เพราะแถวแรกเป็นหัวตาราง)
  for (var i = 1; i < data.length; i++) {
    var name = data[i][0]; // ชื่อผู้รับ
    var email = data[i][1]; // อีเมล
    var score = data[i][2]; // คะแนน (หรือคำตอบในช่องที่คุณต้องการ)
    
    // 4. สร้างสำเนาของเทมเพลต
    var certificate = slides.copy('Certificate for ' + name);
    
    // 5. แทนที่ข้อมูลใน Template
    var slidesText = certificate.getSlides();
    slidesText[0].replaceAllText('<<name>>', name); // แทนที่ชื่อ
    slidesText[0].replaceAllText('<<score>>', score); // แทนที่คะแนน
    slidesText[0].replaceAllText('<<date>>', new Date().toLocaleDateString()); // ใส่วันที่
    
    // 6. ดาวน์โหลดเป็น PDF
    var pdf = DriveApp.getFileById(certificate.getId()).getAs('application/pdf');
    
    // 7. ส่งอีเมลเกียรติบัตร
    MailApp.sendEmail({
      to: email,
      subject: 'เกียรติบัตรการเข้าร่วมกิจกรรม',
      body: 'เรียนคุณ ' + name + ',\n\nเกียรติบัตรของคุณตามแนบ\n\nขอบคุณครับ/ค่ะ',
      attachments: [pdf]
    });
    
    // 8. ลบสำเนาของเกียรติบัตรหลังจากส่งอีเมล
    DriveApp.getFileById(certificate.getId()).setTrashed(true);
  }
}

คำอธิบายโค้ด:

  • Step 1: เราเปิด Google Sheets ที่เก็บคำตอบจาก Google Form
  • Step 2: เราเปิด Google Slides Template ที่สร้างไว้
  • Step 3: ลูปผ่านแต่ละแถวใน Google Sheets เพื่อดึงข้อมูล (ชื่อ, อีเมล, คะแนน)
  • Step 4: สร้าง สำเนา Google Slides สำหรับแต่ละบุคคล
  • Step 5: ใช้ replaceAllText เพื่อแทนที่ข้อมูลที่ต้องการ
  • Step 6: ดาวน์โหลด เกียรติบัตรเป็นไฟล์ PDF
  • Step 7: ส่ง อีเมล พร้อมไฟล์ PDF ไปยังอีเมลที่กรอกในแบบฟอร์ม
  • Step 8: ลบสำเนา ของเกียรติบัตรหลังจากส่งอีเมลเสร็จ

2.2 ตั้งค่า Trigger เพื่อให้ทำงานอัตโนมัติ

  1. ไปที่ Triggers ใน Google Apps Script:
    Edit > Current Project’s Triggers
  2. ตั้งให้ฟังก์ชัน createCertificate ทำงานอัตโนมัติเมื่อมีการส่งคำตอบใหม่ใน Google Form:
    • เลือกฟังก์ชัน createCertificate
    • เลือก Trigger: On form submit เพื่อให้ทำงานทุกครั้งที่มีการกรอกข้อมูล

3. ทดสอบการใช้งาน

  • ทดสอบการกรอกข้อมูลใน Google Form และตรวจสอบว่าเกียรติบัตรจะถูกสร้างและส่งไปยังอีเมลอัตโนมัติ
  • ตรวจสอบว่าไฟล์ PDF ถูกสร้างและส่งได้ถูกต้องตามที่ต้องการ

4. สรุป

การใช้ Google Apps Script เพื่อสร้างเกียรติบัตรอัตโนมัติเป็นวิธีที่ มีประสิทธิภาพ และ ฟรี สำหรับผู้ที่ต้องการส่งเกียรติบัตรหรือประกาศนียบัตรจำนวนมาก เช่น:

  • กิจกรรมอบรม
  • แบบประเมิน
  • การสอบออนไลน์

โดยใช้ Google Form, Google Sheets, Google Slides, และ Google Apps Script จะช่วยประหยัดเวลาและเพิ่มความสะดวกในการจัดการข้อมูลให้สะอาดและเป็นระบบ