Google Script - Pengingat Sholat untuk Telegram
Contoh penggunaan Google Script menggunakan Library Telegram API seperti pada postingan sebelumnya. Kali ini kita buat implementasinya untuk membuat reminder waktu-waktu sholat, kemudian dikirim ke grup Telegram atau ke channel.
Pengantar
Dengan berbekal Google Script Library untuk Bot API Telegram, dan sebelumnya telah ada tutorial Random Quran.
Kali ini, saya contohkan cara membuat reminder atau pengingat waktu-waktu sholat bersumber API Fathimah yang telah ada untuk mendapatkan jadwal sholat berdasarkan waktu sholat dari kementrian agama republik Indonesia.
Contoh yang sudah jalan ada pada grup Selasar @myQers, setiap waktu-waktu sholat akan memberi pesan :
Bahan
-
Akun google, untuk menaruh script google nya.. ya tentu saja!
Dengan memiliki akun di gmail, secara otomatis sudah ada akun google.
-
Google Script Library untuk Bot API Telegram,
ID Library :
MHczUHrzvBLV1HsUn5XkOIfvg_do21SJ
- Sedikit pengetahuan API Fathimah
- Token Bot API dari botFather
-
ID Grup/Supergrup, atau Username Channel.
dalam hal ini kita akan pergunakan sebagai contoh adalah ID Grup atau Supergroup di Telegram.
Dengan modal Google Script, kita tidak memerlukan sebuah web server lagi atau pun sebuah VPS untuk membuat crontab atau menjalankan script.
Itulah poin utama atau kelebihannya yang ingin kita ulas atau tonjolkan pada materi ini.
Langkah
Mari kita coba ikuti langkah-langkah berikut ini.. pastikan teliti mencobanya yak.
1. Google Script
Buka Google Script Editor atau via google drive, klik kanan tambahkan file baru google script.
2. Tambahkan Library
Pilih menu Resource -> Library
Tambahkan ID library : MHczUHrzvBLV1HsUn5XkOIfvg_do21SJR
Pilih versi terakhir yang tersedia.
Pastikan proyek sudah disimpan dan diberi nama proyek sebelum menambahkan library.
3. Tulis Kode
Pengkodean kita buat menjadi 2 fungsi:
- mengambil data waktu sholat harian
- mengirim pesan ke telegram
Yuk, kita mulai:
-
Fungsi
getJadwalSholat()
function getJadwalSholat() { var tanggal = Utilities.formatDate(new Date(), "Asia/Jakarta", "yyyy-MM-dd"); var kodeKota = '667'; // kota Jakarta var response = UrlFetchApp.fetch("http://api.banghasan.com/sholat/format/json/jadwal/kota/"+kodeKota+"/tanggal/"+tanggal); var sholat = JSON.parse(response); // ambil script properties var properti = PropertiesService.getScriptProperties(); // ambil nilai-nilai jadwal sholat var jadwal = {}; jadwal['ashar'] = sholat.jadwal.data.ashar; jadwal['dhuha'] = sholat.jadwal.data.dhuha; jadwal['dzuhur'] = sholat.jadwal.data.dzuhur; jadwal['imsak'] = sholat.jadwal.data.imsak; jadwal['isya'] = sholat.jadwal.data.isya; jadwal['maghrib'] = sholat.jadwal.data.maghrib; jadwal['subuh'] = sholat.jadwal.data.subuh; jadwal['tanggal'] = sholat.jadwal.data.tanggal; // jadwal['terbit'] = sholat.jadwal.data.terbit; //masukkan data ke properti script for (var key in jadwal) { if( jadwal.hasOwnProperty(key) ) { namaKey = key; valueKey = jadwal[key]; properti.setProperty(namaKey, valueKey); } } // Logger.log(jadwal); }
Fungsi diatas bertugas mengambil data waktu sholat dari API Fathimah, yang kemudian hasilnya di simpan pada properti script
properti.setProperty(namaKey, valueKey)
Sesuaikan kode kota, di sini saya masukkan kode kota
667
yakni untuk kota Jakarta. Sedangkan untuk kode kota lainnya, bisa di cek di bot @Fathimah dengan mengetikkan!sholat [kota]
Misalnya mencari kode kota kediri:
!sholat kediri
Artinya, kode (kabupaten) Kediri adalah
749
, sedangkan untuk Kota Kediri adalah773
.Ok lanjut..
Sekarang, jalankan fungsi di atas klik tombol
run (▶️)
atauRun -> getJadwalSholat
Ketika menjalankan pertama kali, akan meminta akses luar. Jawab IYA untuk melanjutkan.
Jika tidak terjadi kesalahan, pada menu
File -> Project Properties
maka akan tampil seperti ini:Pastikan seperti screenshot
project properties
tersebut ada isinya. -
Fungsi
showReminder()
Selanjutnya, kita buat fungsi kedua yakni
showReminder
yang fungsi untuk menampilkan data yang didapat darigetJadwalSholat
ke Grup Telegram :function showReminder() { var properti = PropertiesService.getScriptProperties().getProperties(); var waktuSkrg = Utilities.formatDate(new Date(), "Asia/Jakarta", "HH:mm"); var token = "TOKEN BOT"; // Isikan Bot Token dari @botFather var chatid = '-1111'; // Isikan ID GRUP Telegram var tg = new telegram.daftar(token); for (var waktuTipe in properti) { if (properti[waktuTipe] == waktuSkrg) { var pesan = '🕰 Sekarang waktunya *' + waktuTipe.toUpperCase() + '* hari `'+ properti['tanggal'] +'` pukul `' + waktuSkrg + '` WIB, untuk *DKI Jakarta* _dan sekitarnya..._' ; tg.kirimPesan(chatid, pesan, 'markdown'); } } }
Secara umum fungsi diatas ketika dipanggil akan membaca variable script properties, kemudian mencocokkan waktunya. Jika ada waktu yang cocok, akan mengirimkan pesan ke
chatid
4. Buat Trigger
Langkah terakhir, kita buat trigger untuk kedua fungsi di atas.
Masing-masing berbeda..
getJadwalSholat
diseting setiap hari antara jam 1 pagi sampai dengan 2 pagi.showReminder
dibuat per menit
Caranya:
- Klik icon waktu (🕒) atau
Resources -> Current project trigger
- Klik
No triggers set up. Click here to add one now.
untuk menambahkan trigger baru. - Pastikan nama fungsi terpilih, kemudian sesuaikan waktunya seperti pada screenshot di bawah.
- terakhir,
save
untuk menyimpannya.
Selesai… Grup insyaAllah akan menerima broadcast setiap ada waktu sholat tiba.
Source Code
Berikut full source code nya:
/*
* Hasanudin H Syafaat
* Email: [email protected]
* Telegram: @hasanudinhs
*
* Reminder Sholat @ Telegram
* Versi 1.00
* Depok, 11 Februari 2017
*/
function getJadwalSholat() {
var tanggal = Utilities.formatDate(new Date(), "Asia/Jakarta", "yyyy-MM-dd");
var kodeKota = '667'; // kota Jakarta
var response = UrlFetchApp.fetch("http://api.banghasan.com/sholat/format/json/jadwal/kota/"+kodeKota+"/tanggal/"+tanggal);
var sholat = JSON.parse(response);
// ambil script properties
var properti = PropertiesService.getScriptProperties();
// ambil nilai-nilai jadwal sholat
var jadwal = {};
jadwal['ashar'] = sholat.jadwal.data.ashar;
jadwal['dhuha'] = sholat.jadwal.data.dhuha;
jadwal['dzuhur'] = sholat.jadwal.data.dzuhur;
jadwal['imsak'] = sholat.jadwal.data.imsak;
jadwal['isya'] = sholat.jadwal.data.isya;
jadwal['maghrib'] = sholat.jadwal.data.maghrib;
jadwal['subuh'] = sholat.jadwal.data.subuh;
jadwal['tanggal'] = sholat.jadwal.data.tanggal;
// jadwal['terbit'] = sholat.jadwal.data.terbit;
//masukkan data ke properti script
for (var key in jadwal) {
if( jadwal.hasOwnProperty(key) ) {
namaKey = key;
valueKey = jadwal[key];
properti.setProperty(namaKey, valueKey);
}
}
// Logger.log(jadwal);
}
function showReminder() {
var properti = PropertiesService.getScriptProperties().getProperties();
var waktuSkrg = Utilities.formatDate(new Date(), "Asia/Jakarta", "HH:mm");
var token = "TOKEN BOT"; // Isikan Bot Token dari @botFather
var chatid = '-1111'; // Isikan ID GRUP Telegram
var tg = new telegram.daftar(token);
for (var waktuTipe in properti) {
if (properti[waktuTipe] == waktuSkrg) {
var pesan = '🕰 Sekarang waktunya *' + waktuTipe.toUpperCase() + '* hari `'+ properti['tanggal'] +'` pukul `' + waktuSkrg + '` WIB, untuk *DKI Jakarta* _dan sekitarnya..._' ;
tg.kirimPesan(chatid, pesan, 'markdown');
}
}
}
Shortcut
Belum sempat saya buatkan script library untuk reminder waktu sholat.. Tapi saya rasa tidak perlu yak, toh tinggal copy paste aja script di atas hehe..
Tips
Jika tidak tahu, ID Grup nya berapa.. masukkan @GeDebugBot ke grup, selanjutnya ketik !status
Maka GeDebug akan menginformasikan ID Grup dan ID Telegram kamu.
Kesimpulan
Dari script di atas kita dapat belajar :
- Pemanfaatan Library pada Google Script
- Mengambil data dari suatu API dalam format JSON dan mengolahnya
- Menyimpan variable ke dalam Properti Proyek
- Mengirim pesan ke suatu grup (chatid) di Telegram via Bot API
- Membuat beberapa skedul agar script berjalan setiap waktu yang ditentukan
Penutup
Dengan memanfaatkan metode serupa, dapat dibuat berbagai reminder lainnya. Misalnya jadwal pelajaran sekolah, jadwal shift guru, dan lain-lain. Silakan divariasikan!
Jangan lupa bergabung di grup Telegram @botIndonesia, untuk berdikusi dan bersilaturrahim dengan para programmer bot lainnya.
Semoga bermanfaat, jangan lupa komentarnya jika sudah membaca ini.. tinggalkan jejak agar saya mengenal kamu dan tahu pendapatmu 😘