Pada artikel sebelumnya setiap sertifikat dikirim via Gmail ke setiap peserta. Dengan mengalihkan pengiriman melalui Telegram diharapkan lebih menghemat kuota proses dan ruang simpan.
Anda harus lebih dulu menyimak artikel Membuat Sertifikat Otomatis Dengan Apps Script sebelum melanjutkan ke materi iniSiLiKiDi
OPTIMALISASI
Kita akan melakukan optimalisasi dari script sebelumnya yang semula dilakukan serempak berubah menjadi sesuai permintaan user [on-demand]:
- Bila sertifikat user sudah ada di subfolder maka proses pembuatan diabaikan untuk beralih ke proses pengiriman
- Bila dipastikan sertifikat user belum tersedia, dilakukan proses pembuatan sertifikat sesuai permintaan user
- Pengiriman sertifikat dialihkan melalui Chat Bot Telegram untuk menghindari kuota Gmail
- Sertifikat yang dikirim dikonversi menjadi PDF untuk kompabilitas perangkat yang digunakan user pada umumnya
- Proses iterasi diubah menjadi proses pencarian nama sesuai permintaan user
- Pencarian keyword nama dipersempit di satu kolom saja. Setelah nama ditemukan, pindai semua kolom di baris tersebut untuk pengisian sertifikat
LOGIKA PROSES
Pemrosesan sertifikat oleh Apps Script ini harus dipicu oleh user dengan mengetikkan command /sertifikat nama_peserta. Telegram mengirim command tersebut melalui koneksi webhook untuk selanjutnya diproses oleh Apps Script.
Pastikan anda sudah membuat command /sertifikat pada bot anda. Simak caranya di artikel Membuat Menu Command Bot TelegramSiLiKiDi
Apps Script akan memeriksa arsip sertifikat sebelum membuatnya dan arsip tersebut yang langsung dikirimkan ke Telegram tanpa perlu melakukan proses pembuatan sertifikat.
Bila arsip sertifikat tidak tersedia, maka dilakukan proses pembuatan sertifikat. Apps Script akan memeriksa data di Google Sheets sesuai kiriman argumen nama_peserta yang disertakan dalam command /sertifikat.
Pengiriman sertifikat akan dilakukan bila arsip sertifikat ditemukan di subfolder Google Drive atau nama_peserta tercatat di Google Sheets.
ANATOMI SCRIPT
Optimalisasi diimplementasikan dengan membagi script dalam beberapa modul fungsi:
- Fungsi pemeriksaan ketersediaan sertifikat di subfolder
- Fungsi pencarian nama
- Fungsi pembuatan sertifikat
- Fungsi konversi ke PDF dan pengiriman ke Telegram
FUNGSI PEMERIKSAAN cariSertifikat()
Bila arsip sertifikat ditemukan maka akan langsung dikirim ke Telegram. Bila arsip sertifikat tidak ditemukan dilanjutkan dengan proses pembuatannya.
Bila ditemukan lebih dari satu arsip dengan nama yang sama, maka arsip pertama yang akan dikirimkan saja. Hal ini untuk menghindari duplikasi pengiriman yang tidak perlu dan mengarahkan user untuk dengan benar menuliskan nama.
FUNGSI PENCARIAN cariPeserta()
Dalam proses pencarian nama, kita tidak perlu boros memindai semua area data melainkan cukup di satu kolom Employee Name saja. Pemindaian kolom selengkapnya dilakukan setelah baris data dari yang dicari telah ditemukan.
FUNGSI PEMBUATAN SERTIFIKAT createCertificates()
Proses pembuatan sertifikat hanya dilakukan jika telah dipastikan arsip sertifikat peserta belum pernah dibuat. Setelah sertifikat dibuat dilanjutkan dengan proses pengirimannya ke Telegram.
FUNGSI PENGIRIMAN SERTIFIKAT kirimSertifikat()
Pengiriman sertifikat dialihkan melalui chat Bot Telegram yang dengan demikian akan menghindari pemrosesan secara masal yang sebenarnya tidak diperlukan.
Dengan demikian akan menghemat proses dan setelah sertifikat dikirim melalui Telegram dapat ditindaklanjuti kemudian oleh user untuk membaginya dengan aplikasi lain termasuk mengirim ke email dari Telegram.
Sebelum dikirimkan, sertifikat dikonversi ke PDF untuk kompatibilitas perangkat user karena format PDF sudah menjadi standar umum dimiliki hampir semua perangkat saat iniSiLiKiDi
FINAL SCRIPT
Final Script dapat diunduh di repository. Script ini merupakan pengembangan dari karya Sourabh Choraria untuk kredit kreatifitasnya.
EKSPERIMEN LANJUTAN
Tantangan dari scripting sertifikat ini adalah Asynchronous javascript, terkadang pengiriman lebih dulu terjadi sebelum penulisan di sertifikatSiLiKiDi
Hal ini bisa terjadi karena proses penulisan ke sertifikat membutuhkan waktu lebih lama, sedangkan dalam metode Asynchronous setiap fungsi diproses independen tidak menunggu suatu fungsi selesai diproses.
Bila user mendapatkan pengalaman seperti hal tersebut maka cobalah untuk mengulang command /sertifikat [nama] hingga sertifikat yang diterimanya benar-benar telah terisi datanya.
Sebagai alternatif dengan pendekatan fungsi custom polyfill promise karena Google Apps Script belum mendukung pengendalian Asynchronous iniSiLiKiDi
Promise memungkinkan pemrosesan fungsi secara berurut [Synchronous] sehingga terhindar dari saling mendahului.
Polyfill adalah scripting yang biasanya digunakan ketika perangkat user atau browser belum mendukung fitur tertentu dari javascript termasuk Apps Script yang belum mendukung Promise.
Anda bisa adopsi dari cPromisePolyfill dengan contoh penerapan dapat dilihat di sini. Selengkapnya silahkan simak penjelasannya.
Pada artikel selanjutnya kita akan mencoba otomatisasi pencarian berdasarkan username Telegram tanpa meminta input dari user dan penerapan promise untuk mengurut prosesSiLiKiDi
Dapatkan skrip semua materi di repository
Dukung donasi agar tutorial ini tetap operasional:
SiLiKiDi
Komentar
Posting Komentar