Langsung ke konten utama

Seri 8: Menghubungkan Google Apps Script dengan API Eksternal

Pada seri sebelumnya, kita sudah belajar Membuat Add-on Sederhana untuk Google Sheets. Pada seri ini kita akan belajar:

  • Apa itu API dan bagaimana cara kerja HTTP Request.

  • Cara menggunakan UrlFetchApp di Google Apps Script.

  • Mengambil data dari API publik (contoh: cuaca).

  • Mengirim data ke API eksternal (contoh: webhook).

  • Menampilkan hasilnya di Google Spreadsheet.


⚙️ 1. Apa Itu API?

API (Application Programming Interface) adalah jembatan yang memungkinkan satu aplikasi berbicara dengan aplikasi lain.

Misalnya:

  • Kita bisa mengambil data cuaca dari OpenWeatherMap API.

  • Mengirim pesan ke Telegram atau WhatsApp Business API.

  • Mengirim data penjualan ke sistem internal perusahaan.

API bekerja dengan cara mengirim permintaan HTTP (request) dan menerima balasan (response) dalam format seperti JSON.


🔧 2. Fungsi Dasar UrlFetchApp

Google Apps Script menyediakan objek bernama UrlFetchApp untuk berkomunikasi dengan API eksternal.

Sintaks dasarnya:

const response = UrlFetchApp.fetch(url, options);
  • url → alamat API yang ingin diakses.

  • options → pengaturan request seperti metode, header, dan payload (jika perlu).

  • response → hasil dari server (bisa berupa JSON, teks, atau HTML).


☀️ 3. Contoh 1: Mengambil Data Cuaca (GET Request)

Mari kita ambil contoh API publik dari OpenWeatherMap.
Kita akan ambil data suhu terkini di Jakarta.

function ambilDataCuaca() { const apiKey = 'ISI_API_KEY_ANDA'; const city = 'Jakarta'; const url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`; const response = UrlFetchApp.fetch(url); const data = JSON.parse(response.getContentText()); const suhu = data.main.temp; const kondisi = data.weather[0].description; Logger.log(`Suhu di ${city}: ${suhu}°C, kondisi: ${kondisi}`); }

📘 Penjelasan:

  • UrlFetchApp.fetch() → mengirim permintaan ke API.

  • JSON.parse() → mengubah teks JSON menjadi objek JavaScript.

  • data.main.temp dan data.weather[0].description → mengekstrak data cuaca.

Kita bisa menulis hasilnya ke spreadsheet juga:

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Cuaca'); sheet.appendRow([new Date(), city, suhu, kondisi]);

📮 4. Contoh 2: Mengirim Data ke API (POST Request)

Sekarang, kita akan belajar mengirim data ke API eksternal menggunakan metode POST.

Contoh kasus: kita ingin mengirim data ke webhook (misalnya untuk sistem internal atau Discord, Notion, atau Zapier).

function kirimDataKeAPI() { const url = 'https://webhook.site/xxxxxx'; // Ganti dengan URL webhook Anda const data = { nama: 'Bagus Prasojo', waktu: new Date().toISOString(), pesan: 'Percobaan kirim data dari Google Apps Script!' }; const options = { method: 'POST', contentType: 'application/json', payload: JSON.stringify(data) }; const response = UrlFetchApp.fetch(url, options); Logger.log('Response server: ' + response.getContentText()); }

📘 Penjelasan:

  • method: 'POST' → menentukan jenis request.

  • contentType: 'application/json' → memberitahu server format datanya.

  • payload → isi body yang kita kirim ke API.

Dengan ini, setiap kali fungsi dijalankan, data JSON akan dikirim ke URL tujuan.


🔐 5. Menggunakan Header Otorisasi (API Key / Token)

Beberapa API membutuhkan autentikasi, misalnya API cuaca, WhatsApp API, atau Telegram Bot.
Biasanya kita perlu menambahkan header Authorization.

Contoh:

function ambilDataDenganToken() { const url = 'https://api.example.com/data'; const token = 'Bearer 1234567890abcdef'; const options = { method: 'GET', headers: { 'Authorization': token } }; const response = UrlFetchApp.fetch(url, options); const result = JSON.parse(response.getContentText()); Logger.log(result); }

🧩 6. Contoh Kasus Nyata: Menampilkan Data Cuaca dari BMKG menggunakan API

Kita bisa ambil data dari API publik seperti milik BMKG

function ambilDataCuacaBMKG() {
  const url = `https://api.bmkg.go.id/publik/prakiraan-cuaca?adm4=31.71.03.1001`;

  const response = UrlFetchApp.fetch(url);
  const data = JSON.parse(response.getContentText());
  Logger.log('Provinsi : ' + data.lokasi.provinsi);
  Logger.log('Kota/Kab : ' + data.lokasi.kotkab);
  Logger.log('Kecamatan : ' + data.lokasi.kecamatan);
  Logger.log('Desa : ' + data.lokasi.desa);
  Logger.log('------------------------------ C U A C A -------------------------------');
  Logger.log(data.data[0].cuaca[0][0]);
 
}

Script di atas akan menampilkan data cuaca yang diambil dari data BMKG ke dalam log

Cuaca dari BMKG



🧠 7. Tips dan Praktik Terbaik

✅ Gunakan try...catch untuk menangani error API:

try { const res = UrlFetchApp.fetch(url); } catch (e) { Logger.log('Terjadi error: ' + e); }

✅ Gunakan PropertiesService untuk menyimpan API key agar lebih aman:

const props = PropertiesService.getScriptProperties(); props.setProperty('API_KEY', '12345ABCDE'); const apiKey = props.getProperty('API_KEY');

✅ Gunakan JSON.parse() hanya untuk data dalam format JSON.

✅ Gunakan Logger.log(response.getResponseCode()) untuk memeriksa status request.


📚 Kesimpulan

Di seri ini kita sudah belajar:

  • Dasar komunikasi antar sistem melalui API.

  • Mengambil data dari API (GET).

  • Mengirim data ke API (POST).

  • Menambahkan header otorisasi/token.

  • Menyimpan hasil ke Google Spreadsheet.

Dengan kemampuan ini, Google Apps Script bisa menjadi hub integrasi otomatis antara Google Workspace dan layanan eksternal — dari laporan keuangan, notifikasi, chatbot, hingga sistem bisnis internal.


🔜 Seri Selanjutnya

➡️ Seri 9: Membuat Web App dengan Google Apps Script

Kita akan membuat aplikasi web mini berbasis GAS, lengkap dengan tampilan HTML, form input, dan penyimpanan data ke Spreadsheet.
Ini adalah langkah besar menuju pembuatan aplikasi internal berbasis cloud yang mudah diakses oleh tim.

Komentar

Postingan populer dari blog ini

Cara Efektif Menggunakan StringGrid

StringGrid merupakan salah satu VCL yang sangat berguna. Jika anda sudah familiar dengan Webbased Application, anda bisa analogikan StringGrid dengan Table. Table digunakan untuk meenampilkan data. Adapun StringGrid, selain sebagai komponen untuk menampilkan data, dia juga juga bisa sebagai tempat untuk memasukkan data, lihat gambar di bawah ini : Pada gambar di atas, saya menampilkan form jurnal umum sebagai contoh penggunaan StringGrid. Pada contoh di atas, stringgrid dipakai untuk memasukkan data item jurnal berupa Kode dan nama perkiraan, status Debet/Kredit dan Nominal. Untuk memanfaatkan Stringgrid saya mempunyai beberapa konstanta yang mencerminkan nomor urut kolom, misalnya _KolKode merujuk pada kolom Kode Perkiraan, _KolNama merujuk pada kolom Nama. Lebih jelasnya lihat baris kode berikut : Const _KolKode : Integer = 0; _KolNama : Integer = 1; _KolDK : Integer = 2; _KolNominal : Integer = 3; Konstanta-konstanta tersebut saya pakai di beberapa tempat. Diantaran...

Tanda-tanda programmer buruk

Dalam dunia pekerjaan, ada berbagai cara untuk menjadi tidak efektif. Berikut adalah beberapa perilaku yang sering terjadi pada beberapa programmer yang pernah saya kerjakan selama bertahun-tahun: "Saya Seorang Insinyur Perangkat Lunak, Bukan Programmer"  Anda tahu seperti apa mereka. Mereka membawa keyboard mekanis ke kantor? Mereka tidak bisa ikut dalam pertemuan harian karena terlalu sibuk memikirkan masalah tersebut (hanya butuh 5 menit untuk menyampaikan apa yang Anda pikirkan). Berapa lama waktu yang dibutuhkan untuk mendapatkan latte? Saya tidak begitu yakin bagaimana seseorang bisa menjadi begitu sombong dengan pengalaman 3 tahun, tapi begitulah adanya. Saya suka mengesankan orang dengan gelar pekerjaan saya. Siapa? Apa maksud Anda, tidak ada yang peduli. Mungkin sebaiknya Anda menghabiskan lebih banyak waktu untuk bekerja dan sedikit waktu untuk memikirkan status Anda? Papan Tulis di Belakang  Beberapa orang di industri ini memiliki gelar. Saya pernah bekerja deng...

Singleton Pattern

Motivasi Kadang ada keadaan di mana kita hanya boleh memiliki satu instan dari suatu kelas. Sebagai contoh, kita hanya boleh memiliki satu window manager (atau satu sistem file atau satu spooler printer) pada satu aplikasi. Biasanya singleton digunakan untuk managemen sumber daya internal maupun eksternal secara terpusat dan bisa diakses dimanapun. Singleton merupkan salah satu design pattern yang paling sederhana. Singleton hanya melibatkan satu kelas yang bertanggung jawab untuk menginstansiasi dirinya sendiri dan pada saat yang bersamaan menyediakan akses secara global terhadap instan tersebut. Pada pattern singleton, instan bisa diakses dari manapun tanpa harus memanggil contructor dari kelas instan tersebut Tujuan • Memastikan bahwa satu kelas hanya bisa dibuat instannya sekali. • Menyediakan akses secara global terhadap instan singleton tersebut. Implementasi Pada bahasa pemrograman Java, implementasi dari singleton adalah dengan membuat sebuah atribut static pada...