Cara Membuat Sertifikat Otomatis + QR Code dari Spreadsheet (Tanpa Ribet!)
Cara Mudah Membuat Sertifikat Otomatis + QR Code dengan Google Apps Script
Pernahkah Anda mengadakan webinar atau pelatihan di instansi dan merasa pusing saat harus membuat ratusan sertifikat satu per satu? Selain memakan waktu, risiko salah ketik nama atau nomor sertifikat sangatlah besar.
Mungkin Anda pernah mencoba menggunakan add-on langsung dari Google Form. Namun, masalah sering muncul ketika peserta mengisi formulir berkali-kali karena ragu, atau data yang masuk berantakan (huruf kecil semua, typo, dll).
Nah, di Ruang Perpustakaan kali ini, kita akan membahas solusi yang lebih aman dan rapi: Otomasi Sertifikat melalui Google Spreadsheet.
Mengapa Harus Lewat Spreadsheet?
Menggunakan Spreadsheet sebagai jembatan antara data dan sertifikat memiliki beberapa keunggulan:
Data Cleaning: Kita bisa merapikan nama peserta (misalnya mengubah ke Huruf Kapital) sebelum sertifikat dicetak.
Filter Duplikat: Menghapus data peserta yang mengisi formulir lebih dari satu kali.
QR Code Otomatis: Menambahkan fitur keamanan berupa QR Code unik untuk verifikasi keaslian sertifikat.
Tanpa Biaya: Tidak perlu langganan aplikasi pihak ketiga, cukup gunakan fitur bawaan Google Workspace.
Persiapan "Bahan Baku"
Sebelum masuk ke bagian kode, siapkan 3 hal berikut di Google Drive Anda:
1. Database di Google Spreadsheet
Siapkan tabel dengan kolom sebagai berikut:
No
Nomor Sertifikat
Nama (Gunakan format yang rapi)
Jabatan dalam Kegiatan
Nama Kegiatan
Email
QR Code (Kolom ini akan kita isi secara otomatis)
2. Template di Google Slides
Buatlah desain sertifikat dengan 2 slide (halaman depan untuk identitas, halaman belakang untuk daftar materi/JP). Gunakan kode panggil atau tag agar sistem tahu di mana harus meletakkan data, contohnya:
{{Nomor_Sertifikat}}{{Nama}}{{Jabatan}}{{QR}}(Gunakan kotak gambar sebagai penanda tempat QR Code akan muncul)
3. Folder Penyimpanan
Buat satu folder khusus di Google Drive untuk menampung seluruh hasil sertifikat dalam bentuk PDF.
Langkah-Langkah Eksekusi
Buka Spreadsheet yang berisi data peserta.
Pilih menu Extensions > Apps Script.
Masukkan kode (script) yang berfungsi untuk mengambil data, menghasilkan QR Code melalui API (seperti QuickChart), lalu menempelkannya ke template Google Slides.
Jalankan fungsi (Run), dan lihat folder Google Drive Anda terisi secara otomatis dengan sertifikat yang rapi.
function generateSertifikatLengkap() {
// Masukkan URL atau ID di sini
let rawSlidesId = 'masukkan ID google slide';
let rawFolderId = 'masukkan ID google drive';
// Fungsi pembersih otomatis (RegEx)
const extractId = (str) => {
const match = str.match(/[-\w]{25,}/);
return match ? match[0] : str.trim();
};
const TEMPLATE_ID = extractId(rawSlidesId);
const FOLDER_HASIL_ID = extractId(rawFolderId);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 4) return;
// Mengambil data dari A4 sampai kolom L (indeks 11)
const data = sheet.getRange("A4:L" + lastRow).getValues();
const templateFile = DriveApp.getFileById(TEMPLATE_ID);
const targetFolder = DriveApp.getFolderById(FOLDER_HASIL_ID);
data.forEach((row, index) => {
let nomorSertifikat = row[1]; // Kolom B
let namaPenerima = row[2]; // Kolom C
let jabatan = row[3]; // Kolom D
// PERBAIKAN: Mengambil data QR dari Kolom G (Indeks ke-6)
// row[0]=A, row[1]=B, row[2]=C, row[3]=D, row[4]=E, row[5]=F, row[6]=G
let dataQR = row[6];
if (!namaPenerima || namaPenerima === "") return;
// 1. Buat salinan template
let tempFile = templateFile.makeCopy(`Proses_${namaPenerima}`, targetFolder);
let tempDoc = SlidesApp.openById(tempFile.getId());
let slides = tempDoc.getSlides();
let halamanDepan = slides[0];
// 2. Ganti Teks Placeholder
halamanDepan.replaceAllText('{{NOMOR}}', nomorSertifikat);
halamanDepan.replaceAllText('{{NAMA}}', namaPenerima);
halamanDepan.replaceAllText('{{JABATAN}}', jabatan);
// 3. Generate QR Code menggunakan data dari kolom G
if (dataQR) {
try {
// Konversi data ke string untuk berjaga-jaga jika isinya angka
let qrContent = encodeURIComponent(dataQR.toString());
let qrApiUrl = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + qrContent;
let imageBlob = UrlFetchApp.fetch(qrApiUrl).getBlob();
let shapes = halamanDepan.getShapes();
let found = false;
for (let shape of shapes) {
// Pastikan di Google Slides, Alt Text (Description) kotak QR adalah: QR_PLACEHOLDER
if (shape.getDescription() === 'QR_PLACEHOLDER') {
shape.replaceWithImage(imageBlob);
found = true;
break;
}
}
} catch (e) {
Logger.log("Gagal memproses QR untuk " + namaPenerima + ": " + e.message);
}
}
tempDoc.saveAndClose();
// 4. Simpan ke PDF
let pdfBlob = tempFile.getAs(MimeType.PDF);
targetFolder.createFile(pdfBlob).setName("Sertifikat_" + namaPenerima + ".pdf");
// 5. Hapus file Slides sementara
tempFile.setTrashed(true);
Logger.log("Selesai memproses: " + namaPenerima);
});
Browser.msgBox("Proses selesai. PDF telah dibuat di folder tujuan.");
}
Posting Komentar