Pendahuluan
Google Apps Script adalah platform pengembangan aplikasi yang powerful namun mudah digunakan, yang memungkinkan Anda untuk mengotomatiskan tugas-tugas di berbagai layanan Google seperti Google Sheets, Docs, Forms, Gmail, dan Calendar. Yang menarik dari Apps Script adalah Anda tidak perlu setup environment yang rumit – cukup browser dan akun Google, Anda sudah bisa mulai membuat aplikasi!
Dalam artikel ini, kita akan belajar membuat aplikasi sederhana namun praktis: Sistem Pencatat Pengeluaran Harian menggunakan Google Apps Script. Aplikasi ini akan memanfaatkan Google Sheets sebagai database dan Google Forms sebagai interface input data. Artikel ini cocok untuk pemula yang ingin memahami dasar-dasar Apps Script dengan project yang real dan bisa langsung digunakan.
Mengapa Google Apps Script?
Sebelum kita mulai coding, mari kita pahami dulu mengapa Apps Script adalah pilihan yang tepat untuk membuat aplikasi sederhana:
1. Gratis dan Mudah Diakses
Anda tidak perlu membeli hosting atau domain. Semua berjalan di infrastruktur Google yang gratis untuk penggunaan personal dan small business.
2. Terintegrasi dengan Ekosistem Google
Apps Script bisa langsung berinteraksi dengan Gmail, Google Drive, Sheets, Docs, Calendar, dan layanan Google lainnya tanpa perlu setup autentikasi yang rumit.
3. Bahasa yang Familiar
Apps Script menggunakan JavaScript, salah satu bahasa pemrograman paling populer di dunia. Jika Anda pernah belajar JavaScript, Anda akan langsung familiar.
4. Deploy yang Mudah
Tidak perlu setup server atau konfigurasi deployment yang rumit. Cukup beberapa klik, aplikasi Anda sudah live dan bisa diakses.
5. Automasi yang Powerful
Anda bisa membuat trigger berdasarkan waktu, event, atau user action untuk mengotomatiskan berbagai tugas.
Persiapan Sebelum Memulai
Sebelum kita mulai membuat aplikasi, pastikan Anda sudah memiliki:
- Akun Google – Anda bisa menggunakan akun Gmail pribadi atau workspace
- Browser modern – Chrome, Firefox, Edge, atau Safari versi terbaru
- Koneksi internet – Karena semua development dilakukan secara online
- Semangat belajar – Yang paling penting!
Project yang Akan Kita Buat
Kita akan membuat Sistem Pencatat Pengeluaran Harian dengan fitur-fitur berikut:
- Input pengeluaran melalui Google Forms
- Penyimpanan data otomatis ke Google Sheets
- Kategorisasi pengeluaran (Makanan, Transport, Belanja, dll)
- Kalkulasi total pengeluaran otomatis
- Laporan ringkasan per kategori
- Notifikasi email ketika pengeluaran melebihi budget harian
Aplikasi ini sederhana namun sangat praktis untuk digunakan sehari-hari dalam mengelola keuangan pribadi.
Langkah 1: Membuat Google Sheets sebagai Database
Mari kita mulai dengan membuat spreadsheet yang akan menjadi database aplikasi kita.
1.1 Buat Spreadsheet Baru
- Buka Google Drive (drive.google.com)
- Klik tombol + New > Google Sheets > Blank spreadsheet
- Beri nama spreadsheet Anda: “Pencatat Pengeluaran Harian”

1.2 Setup Structure Data
Kita akan membuat dua sheet: satu untuk data pengeluaran, satu untuk ringkasan.
Sheet 1: Data Pengeluaran
Buat header di baris pertama dengan kolom-kolom berikut:
- A1: Tanggal
- B1: Kategori
- C1: Deskripsi
- D1: Jumlah
- E1: Metode Pembayaran
- F1: Catatan

Sheet 2: Ringkasan
Rename sheet kedua menjadi “Ringkasan” dengan kolom:
- A1: Kategori
- B1: Total Pengeluaran
- C1: Jumlah Transaksi

1.3 Format dan Validasi Data
Untuk memastikan data yang masuk konsisten, kita bisa menambahkan data validation:
- Pilih kolom B (Kategori) di sheet Data Pengeluaran
- Klik Data > Data validation
- Pilih List of items
- Masukkan: Makanan, Transport, Belanja, Tagihan, Hiburan, Kesehatan, Lainnya
- Klik Save

Lakukan hal yang sama untuk kolom E (Metode Pembayaran) dengan opsi: Tunai, Debit, Kredit, E-Wallet.
Langkah 2: Membuat Google Forms untuk Input Data
Sekarang kita akan membuat form sebagai interface untuk input data pengeluaran.
2.1 Buat Form Baru
- Kembali ke Google Drive
- Klik + New > Google Forms > Blank form
- Beri judul: “Input Pengeluaran Harian”
- Tambahkan deskripsi: “Form untuk mencatat pengeluaran harian Anda”

2.2 Tambahkan Pertanyaan
Buat pertanyaan sesuai dengan kolom di spreadsheet:
Pertanyaan 1: Tanggal
- Tipe: Date
- Required: Yes
Pertanyaan 2: Kategori
- Tipe: Multiple choice
- Options: Makanan, Transport, Belanja, Tagihan, Hiburan, Kesehatan, Lainnya
- Required: Yes
Pertanyaan 3: Deskripsi
- Tipe: Short answer
- Placeholder: “Contoh: Makan siang di restoran”
- Required: Yes
Pertanyaan 4: Jumlah
- Tipe: Short answer
- Validation: Number, Greater than 0
- Required: Yes
Pertanyaan 5: Metode Pembayaran
- Tipe: Multiple choice
- Options: Tunai, Debit, Kredit, E-Wallet
- Required: Yes
Pertanyaan 6: Catatan
- Tipe: Paragraph
- Required: No
2.3 Hubungkan Form ke Spreadsheet
- Di Google Forms, klik tab Responses
- Klik icon spreadsheet hijau (Link to Sheets)
- Pilih Select existing spreadsheet
- Pilih spreadsheet “Pencatat Pengeluaran Harian” yang sudah kita buat
- Klik Select
Google Forms akan otomatis membuat sheet baru bernama “Form Responses 1” di spreadsheet Anda.

Langkah 3: Menulis Kode Apps Script
Sekarang bagian yang paling menarik – kita akan menulis kode untuk mengotomatiskan berbagai fungsi!
3.1 Membuka Apps Script Editor
- Buka spreadsheet “Pencatat Pengeluaran Harian”
- Klik Extensions > Apps Script
- Editor Apps Script akan terbuka di tab baru

3.2 Kode untuk Memproses Data Form
Hapus kode default myFunction() dan ganti dengan kode berikut:
// Fungsi yang akan dijalankan setiap kali ada form submission baru
function onFormSubmit(e) {
// Ambil spreadsheet aktif
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSheet = ss.getSheetByName("Form Responses 1");
var dataSheet = ss.getSheetByName("Data Pengeluaran");
// Ambil data dari form response terakhir
var lastRow = formSheet.getLastRow();
var formData = formSheet.getRange(lastRow, 2, 1, 6).getValues()[0];
// Parse data
var tanggal = formData[0];
var kategori = formData[1];
var deskripsi = formData[2];
var jumlah = parseFloat(formData[3]);
var metodePembayaran = formData[4];
var catatan = formData[5];
// Tambahkan data ke sheet Data Pengeluaran
dataSheet.appendRow([tanggal, kategori, deskripsi, jumlah, metodePembayaran, catatan]);
// Update ringkasan
updateRingkasan();
// Cek budget harian
cekBudgetHarian(jumlah);
// Log untuk debugging
Logger.log("Data berhasil ditambahkan: " + deskripsi + " - Rp " + jumlah);
}
3.3 Kode untuk Update Ringkasan
Tambahkan fungsi untuk menghitung ringkasan per kategori:
function updateRingkasan() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheetByName("Data Pengeluaran");
var ringkasanSheet = ss.getSheetByName("Ringkasan");
// Ambil semua data kecuali header
var dataRange = dataSheet.getRange(2, 1, dataSheet.getLastRow() - 1, 6);
var data = dataRange.getValues();
// Object untuk menyimpan ringkasan
var ringkasan = {};
// Loop through data dan hitung total per kategori
for (var i = 0; i < data.length; i++) {
var kategori = data[i][1]; // Kolom B (index 1)
var jumlah = parseFloat(data[i][3]); // Kolom D (index 3)
if (kategori && jumlah) {
if (!ringkasan[kategori]) {
ringkasan[kategori] = {
total: 0,
count: 0
};
}
ringkasan[kategori].total += jumlah;
ringkasan[kategori].count += 1;
}
}
// Clear sheet ringkasan kecuali header
if (ringkasanSheet.getLastRow() > 1) {
ringkasanSheet.getRange(2, 1, ringkasanSheet.getLastRow() - 1, 3).clear();
}
// Tulis ringkasan ke sheet
var row = 2;
for (var kategori in ringkasan) {
ringkasanSheet.getRange(row, 1).setValue(kategori);
ringkasanSheet.getRange(row, 2).setValue(ringkasan[kategori].total);
ringkasanSheet.getRange(row, 3).setValue(ringkasan[kategori].count);
row++;
}
Logger.log("Ringkasan berhasil diupdate");
}
3.4 Kode untuk Notifikasi Budget
Tambahkan fungsi untuk mengirim email jika pengeluaran harian melebihi budget:
function cekBudgetHarian(jumlahBaru) {
var BUDGET_HARIAN = 200000; // Set budget harian Anda (Rp 200.000)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheetByName("Data Pengeluaran");
// Ambil tanggal hari ini
var today = new Date();
today.setHours(0, 0, 0, 0);
// Hitung total pengeluaran hari ini
var data = dataSheet.getRange(2, 1, dataSheet.getLastRow() - 1, 4).getValues();
var totalHariIni = 0;
for (var i = 0; i < data.length; i++) {
var tanggal = new Date(data[i][0]);
tanggal.setHours(0, 0, 0, 0);
if (tanggal.getTime() === today.getTime()) {
totalHariIni += parseFloat(data[i][3]);
}
}
// Kirim email jika melebihi budget
if (totalHariIni > BUDGET_HARIAN) {
var emailUser = Session.getActiveUser().getEmail();
var subject = "⚠️ Peringatan: Budget Harian Terlampaui!";
var body = "Halo!\n\n" +
"Pengeluaran Anda hari ini sudah mencapai Rp " + totalHariIni.toLocaleString('id-ID') + "\n" +
"Budget harian Anda: Rp " + BUDGET_HARIAN.toLocaleString('id-ID') + "\n\n" +
"Sudah melebihi Rp " + (totalHariIni - BUDGET_HARIAN).toLocaleString('id-ID') + "\n\n" +
"Pertimbangkan untuk mengurangi pengeluaran hari ini.\n\n" +
"Salam,\nSistem Pencatat Pengeluaran";
MailApp.sendEmail(emailUser, subject, body);
Logger.log("Email peringatan terkirim ke: " + emailUser);
}
}
3.5 Kode untuk Laporan Mingguan
Tambahkan fungsi untuk mengirim laporan mingguan otomatis:
function kirimLaporanMingguan() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheetByName("Data Pengeluaran");
var ringkasanSheet = ss.getSheetByName("Ringkasan");
// Hitung total pengeluaran 7 hari terakhir
var today = new Date();
var weekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
var data = dataSheet.getRange(2, 1, dataSheet.getLastRow() - 1, 4).getValues();
var totalMingguan = 0;
var jumlahTransaksi = 0;
for (var i = 0; i < data.length; i++) {
var tanggal = new Date(data[i][0]);
if (tanggal >= weekAgo && tanggal <= today) {
totalMingguan += parseFloat(data[i][3]);
jumlahTransaksi++;
}
}
// Ambil ringkasan per kategori
var ringkasanData = ringkasanSheet.getRange(2, 1, ringkasanSheet.getLastRow() - 1, 3).getValues();
var ringkasanText = "";
for (var i = 0; i < ringkasanData.length; i++) {
if (ringkasanData[i][0]) {
ringkasanText += "- " + ringkasanData[i][0] + ": Rp " +
ringkasanData[i][1].toLocaleString('id-ID') +
" (" + ringkasanData[i][2] + " transaksi)\n";
}
}
// Kirim email laporan
var emailUser = Session.getActiveUser().getEmail();
var subject = "📊 Laporan Pengeluaran Mingguan";
var body = "Halo!\n\n" +
"Berikut adalah ringkasan pengeluaran Anda dalam 7 hari terakhir:\n\n" +
"Total Pengeluaran: Rp " + totalMingguan.toLocaleString('id-ID') + "\n" +
"Jumlah Transaksi: " + jumlahTransaksi + "\n" +
"Rata-rata per Hari: Rp " + Math.round(totalMingguan / 7).toLocaleString('id-ID') + "\n\n" +
"Ringkasan per Kategori:\n" + ringkasanText + "\n" +
"Tetap bijak dalam mengelola keuangan Anda!\n\n" +
"Salam,\nSistem Pencatat Pengeluaran";
MailApp.sendEmail(emailUser, subject, body);
Logger.log("Laporan mingguan terkirim");
}
3.6 Simpan Project
- Klik icon disk (Save project) atau tekan Ctrl+S
- Beri nama project: “Pencatat Pengeluaran Script”

Langkah 4: Setup Trigger
Agar kode kita berjalan otomatis, kita perlu setup trigger.
4.1 Trigger untuk Form Submit
- Di Apps Script editor, klik icon jam (Triggers) di sidebar kiri
- Klik + Add Trigger di kanan bawah
- Setup sebagai berikut:
- Function:
onFormSubmit - Event source:
From spreadsheet - Event type:
On form submit
Anda mungkin diminta untuk authorize – klik Review permissions dan izinkan akses
Klik Save

5.3 Test dengan Multiple Entries
Coba submit beberapa form lagi dengan kategori berbeda untuk memastikan ringkasan dihitung dengan benar.
Langkah 6: Kustomisasi dan Pengembangan
Setelah aplikasi dasar berjalan, Anda bisa mengembangkannya lebih lanjut:
Penutup
Google Apps Script adalah tool yang sangat powerful untuk automation dan membuat aplikasi sederhana tanpa perlu infrastructure yang rumit. Dengan kreativitas dan pemahaman yang baik, Anda bisa membuat berbagai aplikasi yang membantu pekerjaan sehari-hari.
Jangan takut untuk bereksperimen dan membuat kesalahan – itu adalah bagian dari proses belajar. Mulai dari yang sederhana, pahami konsepnya, lalu kembangkan sesuai kebutuhan Anda.
Selamat coding dan semoga artikel ini bermanfaat! 🚀