Google Script - Pengingat Sholat untuk Telegram

5 menit saja |

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 :

Telegram Bot Notifikasi Waktu Sholat

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.

Google Script Editor

2. Tambahkan Library

Pilih menu Resource -> Library

Tambahkan ID library : MHczUHrzvBLV1HsUn5XkOIfvg_do21SJR

Pilih versi terakhir yang tersedia.

GS Telegram Library

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:

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

    Fathimah Telegram Jadwal Sholat Kediri

    Artinya, kode (kabupaten) Kediri adalah 749, sedangkan untuk Kota Kediri adalah 773.

    Ok lanjut..

    Sekarang, jalankan fungsi di atas klik tombol run (▶️) atau Run -> 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:

    Google Script Logs

    Pastikan seperti screenshot project properties tersebut ada isinya.

  2. Fungsi showReminder()

    Selanjutnya, kita buat fungsi kedua yakni showReminder yang fungsi untuk menampilkan data yang didapat dari getJadwalSholat 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:

  1. Klik icon waktu (🕒) atau Resources -> Current project trigger
  2. Klik No triggers set up. Click here to add one now. untuk menambahkan trigger baru.
  3. Pastikan nama fungsi terpilih, kemudian sesuaikan waktunya seperti pada screenshot di bawah.
  4. terakhir, save untuk menyimpannya.

Google Script Telegram Bot Trigger Jadwal Sholat

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 :

  1. Pemanfaatan Library pada Google Script
  2. Mengambil data dari suatu API dalam format JSON dan mengolahnya
  3. Menyimpan variable ke dalam Properti Proyek
  4. Mengirim pesan ke suatu grup (chatid) di Telegram via Bot API
  5. 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 😘