(GAS-17) Bot Telegram dan Google Form
Tambahan pengayaan tentang integrasi bot Telegram dengan Google Form. Akan menjelaskan materi dimana Google Apps Script sebagai host server kita berdayakan untuk membuat pengingat ketika google form diisi.
Pendahuluan
Catatan kecil tentang scripting ini.
Latar Belakang
Sebenarnya, tidak ada niatan untuk membuat materi ini. Mengingat, google form bukanlah aktivitas harian saya. Report akhir yang juga terdapat di Google Sheet dapat dengan mudah diolah dan dipergunakan. Sudah cukup matang untuk disajikan. Selain itu beberapa artikel di google telah tersedia.
Namun, pada akhirnya setelah direview artikel yang bersebaran pada google kurang komprehensif dalam memberikan contoh kasus, penjelasan, maupun sample kode. Kebanyakan sepotong-sepotong sesuai kasus penanya (yang sebelumnya sudah membuat), dan juga sangat beragam tingkat kesulitannya (tidak cocok buat pemula).
Di grup @botIndonesia beberapa waktu lalu, sempat ditanyakan tentang materi ini. Maka, kiranya akan dapat bermanfaat bila dibuatkan tulisan tersendiri.
Toh ternyata, ketika membuat tulisan ini tidak sesimple dibayangan. Masih perlu membaca-baca dokumentasi, mencarikan yang paling efektif. Sehingga sangat perlu buat didokumentasikan. Baik untuk keperluan rekan-rekan sejawat, para pendidik, penggiat belajar online, dan semuanya.. tidak ketinggalan tentu saja buat diri sendiri.
Maka, perlulah sebuah tulisan tersendiri yang membahas dari mula sampai akhir, dalam ruang dan skup yang telah disesuaikan.
Tujuan dan Asumsi
Kita akan membuat bot notifikasi saat user selesai mengisi kuisioner via Google Form.
Tentang apa itu Google Form, cara membuat kuisioner di Google Form, dan lain-lainnya tidak akan dibahas disini.
Sehingga asumsi pada materi kali ini adalah:
-
Kamu sudah bisa membuat kuisioner melalui Google Form.
-
Kamu sudah punya token bot Telegram untuk menghubungkannya
-
Kamu sudah bisa membuat atau punya channel di Telegram. Baik channel private atau public. Karena semua notifikasi akan di broadcast ke channel.
Pada akhirnya, kamu bebas memodifikasi nantinya akan dibroadcast ke japri, grup, atau sama seperti pada tutorial ini yakni ke channel private.
Alasan memilih channel private sebagai tujuan broadcast adalah:
- Channel private lebih mudah pengaturan jika terjadi penambahan user yang ingin ikut melihat hasil laporan kuisioner
- Broadcast ke channel private lebih ringan dibanding ke user banyak sekaligus. Jika yang menerma broadcast lebih dari 1, maka harus dilakukan looping. Sedangkan pada channel private tidak perlu.
- Channel private lebih nyaman dibanding public, lantaran orang-orang tertentu saja yang diizinkan untuk turut serta melihat. Meski pada akhirnya tetep saja bisa diubah menjadi public.
- Channel pada telegram selalu bertipe Super Grup, sehingga selalu menyimpan history. Berbeda jika Grup, masih membedakan antara Grup Biasa dengan Supergroup. Ini cukup membingungkan buat newbie
- Alasan lain adalah memberikan pelajaran kepada pembaca, bagaimana melihat ID pada sebuah channel.
Jangan membiasakan broadcast ke japri orang banyak. Itu namanya spamming Sebaiknya, manfaatkan pembuatan channel di Telegram. Tambahkan atau biarkan user bergabung untuk mendapatkan informasi dengan sukarela. STOP SPAMMING!
Ruang Lingkup
Kita batasi pembahasan tulisan ini :
- Sekilas tentang Google Form
- Setup Channel dan Bot di Telegram
- Pengkodean Google Apps Script
Fungsi
Fungsi notifikasi dari google form ini memiliki banyak dan beragam. Buat para pembuat kuisioner, absensi, pengajar, surveyor, enginer, event organizer dan berbagai bidang profesi lainnya dapat memanfaatkannya sesuai kasus yang terjadi pada masing-masing.
Tidak perlu di detailkan lebih lanjut ya tentang kegunaannya. InsyaAllah banyak yang sudah mengerti tentang kegunaan Google Form-nya. Sedangkan notifikasinya akan dapat membantu sekali secara realtime bila ada user yang mensubmit atau bergabung.
Kira-kira seperti itu pendahuluannya, mari kita langsung memulai saja.
Silakan disimak dan dipraktekkan baik-baik.
Code
Tulisan ini diberi kode Materi 17
.
Alur
Program yang akan dibuat adalah, ketika ada user yang mengisi kuisoner saat selesai, maka kita akan melihat hasil (report) seketika pada sebuah channel di Telegram.
Metode
Dalam materi ini, dibuat event trigger dari form nya. Metode lain dapat dilakukan juga dengan mendetek event pada spreadsheetnya.
Yang biasa banyak dilakukan adalah deteksi event di spreadsheet. Namun, saya lebih suka dengan metode mendetek pada form-nya. Karena lebih kerasa origin dan lebih singkat tahapannya.
Maka dalam sajian tulisan ini, akan membuat deteksi pemicu dari form.
Langkah
Ikuti step demi step dibawah ini. Silakan dilompati jika sudah punya form (kuisioner) sebelumnya.
Telegram
Kita bereskan dulu lokasi target broadcast di Telegram.
- Buat sebuah channel private untuk menampung hasil report kuisioner
- Tulis sebuah pesan apa saja di channel, kemudian foward pesan tersebut ke @strukturbot
- Pada struktur bot, akan ditampilkan info ID Channel nya. Catat atau simpan ID nya untuk dipergunakan nanti.
Setelah mengetahui ID nya, pesan pada channel tersebut boleh dihapus, atau dibiarkan saja. Terserah. - Kemudian tambahkan bot kamu ke dalam channel tersebut.
- Atur bot biar menjadi Admin dan beri hak akses.
Buat sebuah kuisioner, terserah apa aja. Aku bingung bikin contoh. Jadi aku buat yang simpel sajalah ya.
Setelah form sudah selesai dibuat.
Selanjutnya masuk ke script editor:
Dari sinilah kita akan membuat script triggernya ketika sudah ada yang mengisi kuisioner, maka akan memberi notifikasi ke channel.
Seperti biasa, tambahkan dulu Library Telegramnya.
ID : MHczUHrzvBLV1HsUn5XkOIfvg_do21SJR
Untuk menambahkan, pilih menu Sumber Daya
, lalu Pustaka
.
INGAT! Selalu pilih versi terbaru. Yakni angka terbesar. Saat materi ini sudah versi
20
. Ke depan bisa jadi akan terus bertambah.
Selanjutnya kita tulis script nya. Perhatikan baris demi barisnya ya. Penjelasan ada pada masing-masing komentar di dalamnya.
// Pembuatan Variable Global
// masukkan token bot mu di sini
var token = 'TOKEN_BOT';
// buat objek baru kita kasih nama tg
var tg = new telegram.daftar(token);
// objek pelengkap
// di library versi 20, untuk membersihkan teks dari parsing mode (HTML/Markdown)
var Utils = telegram.Utils;
// inisiasi awal
// id chat dari channel / group tujuan
var chat_id = ID_CHANNEL_MU;
// --- akhir variabel ---
// membuat fungsi yang akan dijadikan trigger ketika form onSubmit
function responDariForm() {
// isi pesan dikosongkan di awal
var pesan = '';
// ambil form aktif
var form = FormApp.getActiveForm();
// ambil semua data respon nya
var formResponses = form.getResponses();
// ambil data respon terakhir saja
var respon = formResponses[formResponses.length-1];
var item = respon.getItemResponses();
// dapatkan email responder
var email = respon.getRespondentEmail();
// masukkan informasi Email ke pesan
// bersihkan sekalian format teks dari email dari tags HTML
pesan += "✉ "+Utils.clearHTML(email);
// ambil waktunya, hasilnya bertipe angka jadi harus diubah ke String dulu
var waktuStamp = respon.getTimestamp();
var waktu = Utilities.formatDate(waktuStamp, "Asia/Jakarta", "yyyy-MM-dd HH:mm:ss");
pesan += "\n⏱ <code>"+Utils.clearHTML(waktu)+" WIB.</code>";
// susun kalimat dari respon user
// dengan format T(anya) dan J(awab)
for (var i =0; i< item.length; i++) {
// format pertanyaan
var tanya = item[i].getItem().getTitle();
// bersihkan pertanyaan dari tag HTML jika ada
tanya = Utils.clearHTML( String(tanya));
// format jawaban
var jawab = item[i].getResponse();
// bersihkan respon jawaban dari tag HTML jika ada
jawab = Utils.clearHTML( String(jawab) );
// susun pesannya
pesan += '\n\n✅ <b>' + tanya + "</b>\n💬 <code>"+ jawab + "</code>";
}
// kirim pesan yang telah tersusun ke channel Telegram
return tg.kirimPesan(chat_id, pesan, 'HTML');
}
Langkah berikutnya, kita buat trigger atau pemicu-nya.
Klik tombol pemicu yang berbentuk seperti icon jam.
Kemudian klik tombol Tambahkan Pemicu
untuk membuat pemicu (trigger) baru.
Keterangan gambar: perhatikan baik-baik yang dikotaki merah
Atur pada form pemicu menjadi seperti ini:
- Pilih fungsi yang dijalankan:
responDariForm
- Pilih penerapan mana yang harus dijalankan:
Head
- Pilih sumber acara:
Dari formulir
- Pilih jenis acara:
Saat mengirim formulir
Kemudian klik tombol Simpan.
SELESAI!
Formulir kuisonir dapat langsung di test dicoba. Jika sukses maka hasilnya akan seperti ini terkirim ke channel:
Referensi
Kuisioner
Ini adalah alamat link kuisioner yang kamu perlu coba:
Silakan diikuti Kuisioner nya ya!
Channel
Link channel untuk melihat hasil kuisoner : Channel Demo Kuisioner @botIndonesia
Youtube
Penutup
Sebenarnya UI Google Script yang berbahasa Indonesia membuat bingung. Agak aneh kosa katanya. Tapi tidak mengapa kepaksa aku buat materi dengan mode bahasa indonesia. Untuk yang UI GAS nya berbahasa aslinya (Inggris), silakan disesuaikan sendiri yak.
Jika ada pertanyaan, saran atau masukkan silakan didiskusikan. Jika ingin live dan biasanya tanggapan juga lebih cepat, sangat disarankan bergabung pada group Telegram @botIndonesia.