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

Object Oriented Programming (OOP) Pada Delphi - Bag 1

Object Pascal, adalah sebuah bahasa dimana delphi menjadi salah satu IDE (Integrated Development Environment) nya, adalah sebuah bahasa yang mendukung penuh konsep OOP. Sederhananya, bahasa ini memungkinkan bagi programmer untuk membuat dan memanipulasi object. Lebih detailnya, bahasa ini mendukung empat prinsip pokok OOP yaitu : Data Abstraction, Encapsulation, Inheritance, Polymorphism. Mempelajari OOP berbeda dengan mempelajari Delphi. Apalagi bagi seorang yang sudah mengenal bahasa Pascal. Bisa jadi ada orang yang sangat mahir delphi/pascal namun sangat lemah pada konsep OOP. Apa itu OOP? Apa Itu Object? Apa Itu Kelas? OOP adalah semua hal yang berkaitan dengan writing programs that manipulate objects : ). Delphi, Java, C++ adalah beberapa contoh bahasa yang mendukung OOP. Ketiga bahasa di atas mempunyai prinsip-prinsip OOP yang sama, tentunya dengan sintaks (penulisan baris kode program) yang berbeda. Sekali kita sudah menguasai konsep OOP, maka akan begitu mudah mempelaja...

Menambahkan Function Pada Fast Report

Fast report merupakan salah satu reporting tool yang banyak dipakai oleh para developer delphi. Fast Reprt menyediakan built-in function yang sangat memudahkan kita dalam membuat sebuah laporan. Namun adakalanya kita membutuhkan function/procedure yang tidak ada pada built-in function bawaan fast report. Oleh karena itu kita harus menambahkan sendiri. Untuk menambahkan function pada fast report kita perlu membuat kelas yang diturunkan dari TfsRTTIModule. Lebih jelasnya lihat baris kode berikut ini : unit uTSFastReportFunction; interface uses SysUtils, Classes, fs_iinterpreter, Forms; type TTSFastReportFunction = class(TfsRTTIModule) private function CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String; var Params: Variant): Variant; public constructor Create(AScript: TfsScript); override; function Quot(AString : String): String; end; const _Kategori : string = 'My Functions'...