Langsung ke konten utama

Mengirim Sertifikat Ke Telegram

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]:

  1. Bila sertifikat user sudah ada di subfolder maka proses pembuatan diabaikan untuk beralih ke proses pengiriman
  2. Bila dipastikan sertifikat user belum tersedia, dilakukan proses pembuatan sertifikat sesuai permintaan user
  3. Pengiriman sertifikat dialihkan melalui Chat Bot Telegram untuk menghindari kuota Gmail
  4. Sertifikat yang dikirim dikonversi menjadi PDF untuk kompabilitas perangkat yang digunakan user pada umumnya
  5. Proses iterasi diubah menjadi proses pencarian nama sesuai permintaan user
  6. 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:
Trakteer Saya SiLiKiDi

Komentar

Postingan populer dari blog ini

Mengirim File Google Drive ke Telegram

Pada eksperimen kali ini anda akan diajak untuk mencoba mengirimkan file yang ada di Google Drive ke chat Telegram menggunakan perantaraan Apps Script.