Catatan Harian Mas Andri

Silahkan digunakan dengan bijaksana

back

Membangun API Jadwal Sholat dengan Google Apps Script: Solusi Sederhana Namun Powerful

22 Maret 2025 || 14:40:58 WIB || ClassyID

Dalam era digital saat ini, akses terhadap informasi waktu sholat menjadi kebutuhan penting bagi umat Muslim. Beragam aplikasi dan situs web telah tersedia, namun bagaimana jika Anda ingin membangun layanan sendiri atau mengintegrasikan jadwal sholat ke dalam aplikasi yang sudah ada? Salah satu solusinya adalah dengan membangun API jadwal sholat sendiri.

Dalam artikel ini, saya akan membahas cara membuat API jadwal sholat sederhana menggunakan Google Apps Script, yang gratis dan mudah diimplementasikan oleh siapa saja dengan pengetahuan dasar pemrograman.

Keunggulan Menggunakan Google Apps Script

Google Apps Script mungkin bukan platform pertama yang terpikirkan untuk membangun API, tetapi platform ini menawarkan beberapa keunggulan menarik:

  1. Gratis: Tidak ada biaya hosting atau infrastruktur
  2. Skalabel: Didukung infrastruktur Google yang andal
  3. Mudah: Tidak perlu setup server atau database kompleks
  4. Terintegrasi: Mudah disinkronkan dengan Google Sheets untuk logging

Cara Kerja API Jadwal Sholat

API ini bekerja dengan langkah-langkah berikut:

  1. Pengambilan Data: Mengambil data dari situs jadwalsholat.org
  2. Pemrosesan: Mengolah data HTML menjadi format JSON yang terstruktur
  3. Caching: Menyimpan data sementara untuk meningkatkan performa
  4. Respons: Mengembalikan jadwal sholat dalam format JSON standar

Fitur-Fitur API

API yang kita bangun memiliki beberapa fitur utama:

1. Jadwal Sholat Hari Ini

Fitur utama adalah menampilkan jadwal sholat hari ini, meliputi waktu:

2. Pilihan Kota

API mendukung ratusan kota di seluruh Indonesia, dengan Kediri sebagai default. Pengguna dapat dengan mudah mengganti kota dengan parameter kota pada URL.

3. Daftar Kota

API juga menyediakan endpoint untuk mendapatkan daftar lengkap kota yang didukung, memudahkan pengembang lain untuk mengintegrasikan solusi ini.

4. Sistem Logging

Fitur logging memungkinkan pemantauan penggunaan API, termasuk informasi tentang:

Tutorial Implementasi

Berikut adalah langkah-langkah sederhana untuk mengimplementasikan API ini:

Langkah 1: Membuat Project Google Apps Script

  1. Buka script.google.com
  2. Klik "New Project"
  3. Salin kode dari repositori GitHub

Langkah 2: Setup Dasar

Fungsi utama untuk menangani request API:

function doGet(e) {
  try {
    // Mendapatkan parameter dari URL
    const params = e.parameter;
    const action = params.action || 'jadwal';
    const kota = params.kota || 'kediri';

    // Catat log akses
    logAccess(e, action, kota);

    // Menentukan tindakan berdasarkan parameter
    switch (action) {
      case 'daftar-kota':
        return getListKota();
      case 'jadwal':
      default:
        return getJadwalSholat(kota);
    }
  } catch (error) {
    // Catat log error
    logError(e, error.message);
    
    // Mengembalikan pesan error
    return ContentService.createTextOutput(JSON.stringify({
      status: 'error',
      message: error.message
    })).setMimeType(ContentService.MimeType.JSON);
  }
}

Langkah 3: Fungsi untuk Mendapatkan Data Kota

function getCities(baseUrl) {
  const cache = CacheService.getScriptCache();
  const cacheKey = 'city_list';
  const cachedData = cache.get(cacheKey);
  
  if (cachedData) {
    return JSON.parse(cachedData);
  }
  
  const response = UrlFetchApp.fetch(baseUrl);
  const content = response.getContentText();
  
  const optionRegex = /

Langkah 4: Mendapatkan Jadwal Sholat

function getAdzans(cityId, month, year) {
  const url = `https://jadwalsholat.org/jadwal-sholat/monthly.php?id=${cityId}&m=${month}&y=${year}`;
  
  try {
    const response = UrlFetchApp.fetch(url);
    const content = response.getContentText();
    
    const rowRegex = /([\s\S]*?)<\/tr>/g;
    const cellRegex = /(.*?)<\/td>/g;
    
    const result = [];
    let rowMatch;
    
    // Parsing data tabel HTML
    while ((rowMatch = rowRegex.exec(content)) !== null) {
      // ... kode parsing ...
    }
    
    return result;
  } catch (error) {
    throw new Error(`Failed to fetch data: ${error.message}`);
  }
}

Langkah 5: Deploy sebagai Web App

  1. Klik menu "Deploy" > "New deployment"
  2. Pilih jenis "Web app"
  3. Atur akses ke "Anyone"
  4. Klik "Deploy"
  5. Salin URL untuk mengakses API

Integrasi dengan Aplikasi Lain

API ini dapat diintegrasikan dengan berbagai jenis aplikasi:

Website

fetch('https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec?kota=jakarta')
  .then(response => response.json())
  .then(data => {
    // Tampilkan jadwal sholat
    console.log(data);
  });

Aplikasi Mobile

// Contoh dalam Flutter/Dart
Future> getJadwalSholat(String kota) async {
  final response = await http.get(
    Uri.parse('https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec?kota=$kota')
  );
  
  if (response.statusCode == 200) {
    return jsonDecode(response.body);
  } else {
    throw Exception('Failed to load jadwal sholat');
  }
}

Telegram Bot

# Contoh dalam Python untuk Telegram Bot
import requests

def get_jadwal_sholat(kota='kediri'):
    url = f'https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec?kota={kota}'
    response = requests.get(url)
    return response.json()

Kesimpulan

Membangun API jadwal sholat menggunakan Google Apps Script merupakan solusi yang praktis, ekonomis, dan efektif untuk menyediakan informasi waktu sholat. Dengan pengetahuan dasar pemrograman, Anda dapat membuat layanan yang berguna bagi komunitas Muslim.

API ini bisa menjadi langkah awal untuk mengembangkan layanan digital yang lebih kompleks, seperti aplikasi reminder sholat, widget untuk website, atau integrasi dengan asisten virtual.

Kode lengkap untuk API ini tersedia di GitHub, silakan kunjungi repositori GITHUB untuk melihat implementasi lengkapnya dan mulai menggunakannya atau berkontribusi pada pengembangan selanjutnya.


Semoga artikel ini bermanfaat dan dapat menginspirasi Anda untuk membangun solusi teknologi yang bermanfaat bagi umat. Jangan ragu untuk berbagi atau mengembangkan API ini lebih lanjut!