(GAS-17) Bot Telegram dan Google Form

7 menit saja |

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:

  1. Kamu sudah bisa membuat kuisioner melalui Google Form.

  2. Kamu sudah punya token bot Telegram untuk menghubungkannya

  3. 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.

  1. Buat sebuah channel private untuk menampung hasil report kuisioner
  2. Tulis sebuah pesan apa saja di channel, kemudian foward pesan tersebut ke @strukturbot
    Postingan Pertama
  3. Pada struktur bot, akan ditampilkan info ID Channel nya. Catat atau simpan ID nya untuk dipergunakan nanti.
    ID Channel

    Setelah mengetahui ID nya, pesan pada channel tersebut boleh dihapus, atau dibiarkan saja. Terserah.
  4. Kemudian tambahkan bot kamu ke dalam channel tersebut.
  5. Atur bot biar menjadi Admin dan beri hak akses.
    Permisi Bot

Google

Buat sebuah kuisioner, terserah apa aja. Aku bingung bikin contoh. Jadi aku buat yang simpel sajalah ya.

Membuat Kuisoner

Setelah form sudah selesai dibuat.

Selanjutnya masuk ke script editor:

Menu Pilihan 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.

Sumber Daya

INGAT! Selalu pilih versi terbaru. Yakni angka terbesar. Saat materi ini sudah versi 20. Ke depan bisa jadi akan terus bertambah.

Tambah Library

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.

Tombol Pemicu

Kemudian klik tombol Tambahkan Pemicu untuk membuat pemicu (trigger) baru.

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

Hasil Kuisioner

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

Lihat daftar video: https://bit.ly/botIndonesia

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.

Tinggalkan komentar