Tutorial Membuat Sistem Manajemen Stok Barang dengan Google Sheets dan Apps Script
Pelajari cara membuat sistem manajemen stok barang sederhana dan gratis untuk toko kelontong atau UMKM menggunakan Google Sheets dan Apps Script. Ikuti langkah-langkah mudah ini untuk memantau stok secara otomatis.
Pendahuluan: Masalah Stok yang Sering Terjadi
Kamu pasti pernah mengalami kehabisan stok barang pas ada pelanggan yang mau beli, atau malah kebanyakan stok sampai kadaluarsa. Kalau kamu masih pakai catatan manual di buku, risiko human error tinggi banget. Apalagi kalau toko kamu agak ramai, bisa-bisa catatan ketinggalan atau hilang.
Tenang, ada solusi gratis yang bisa kamu buat sendiri: sistem manajemen stok menggunakan Google Sheets dan sedikit kode Google Apps Script. Dengan ini, kamu bisa mencatat masuk dan keluarnya barang secara otomatis, dapat peringatan stok menipis, dan lihat laporan stok kapan aja.
Apa Itu Google Apps Script?
Google Apps Script adalah bahasa pemrograman berbasis JavaScript yang bisa kamu pakai untuk mengotomatiskan tugas di produk Google, seperti Sheets, Docs, dan Gmail. Jadi, kamu bisa bikin fungsi-fungsi keren tanpa perlu server atau aplikasi tambahan. Semua gratis selama kamu punya akun Google.
Langkah 1: Siapkan Google Sheet
- Buka Google Sheets dan buat spreadsheet baru.
- Rename sheet pertama menjadi "Stok". Buat kolom: Nama Barang, Kode Barang, Stok Awal, Stok Masuk, Stok Keluar, Stok Akhir, Peringatan.
- Buat sheet kedua bernama "Riwayat" dengan kolom: Tanggal, Kode Barang, Nama Barang, Jumlah, Jenis (Masuk/Keluar), Keterangan.
- Isi stok awal beberapa barang di sheet Stok (misal: Beras 5kg, kode BR001, stok awal 10).
Langkah 2: Tambahkan Kode Apps Script
- Klik menu
Extensions > Apps Script. - Hapus kode default, lalu paste kode berikut:
function updateStock() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var stokSheet = ss.getSheetByName("Stok");
var riwayatSheet = ss.getSheetByName("Riwayat");
var stokData = stokSheet.getDataRange().getValues();
var riwayatData = riwayatSheet.getDataRange().getValues();
// Loop dari baris 2 (skip header)
for (var i = 1; i < stokData.length; i++) {
var kode = stokData[i][1];
var stokAwal = stokData[i][2];
var stokMasuk = stokData[i][3] || 0;
var stokKeluar = stokData[i][4] || 0;
var stokAkhir = stokAwal + stokMasuk - stokKeluar;
stokSheet.getRange(i+1, 6).setValue(stokAkhir);
// Peringatan jika stok < 5
if (stokAkhir < 5) {
stokSheet.getRange(i+1, 7).setValue("Stok Menipis!");
} else {
stokSheet.getRange(i+1, 7).setValue("");
}
}
}
function addTransaction() {
// Fungsi ini bisa dipanggil dari menu atau trigger
// Untuk memudahkan, kita buat input dialog
var ui = SpreadsheetApp.getUi();
var kode = ui.prompt("Masukkan Kode Barang", ui.ButtonSet.OK_CANCEL);
if (kode.getSelectedButton() == ui.Button.CANCEL) return;
var kodeBarang = kode.getResponseText();
var jenis = ui.prompt("Jenis: Masuk atau Keluar?");
if (jenis.getSelectedButton() == ui.Button.CANCEL) return;
var jenisStr = jenis.getResponseText();
var jumlah = ui.prompt("Jumlah");
if (jumlah.getSelectedButton() == ui.Button.CANCEL) return;
var jumlahNum = parseInt(jumlah.getResponseText());
// Cari baris barang di sheet Stok
var stokData = stokSheet.getDataRange().getValues();
var row = -1;
for (var i = 1; i < stokData.length; i++) {
if (stokData[i][1] == kodeBarang) {
row = i+1;
break;
}
}
if (row == -1) {
ui.alert("Kode barang tidak ditemukan!");
return;
}
// Update stok masuk/keluar
if (jenisStr.toLowerCase() == "masuk") {
stokSheet.getRange(row, 4).setValue(stokSheet.getRange(row, 4).getValue() + jumlahNum);
} else if (jenisStr.toLowerCase() == "keluar") {
stokSheet.getRange(row, 5).setValue(stokSheet.getRange(row, 5).getValue() + jumlahNum);
} else {
ui.alert("Jenis tidak valid, gunakan 'Masuk' atau 'Keluar'.");
return;
}
// Tambah ke riwayat
var lastRow = riwayatSheet.getLastRow() + 1;
var tanggal = new Date();
var namaBarang = stokData[row-1][0];
riwayatSheet.getRange(lastRow, 1).setValue(tanggal);
riwayatSheet.getRange(lastRow, 2).setValue(kodeBarang);
riwayatSheet.getRange(lastRow, 3).setValue(namaBarang);
riwayatSheet.getRange(lastRow, 4).setValue(jumlahNum);
riwayatSheet.getRange(lastRow, 5).setValue(jenisStr);
riwayatSheet.getRange(lastRow, 6).setValue("Input manual");
// Panggil updateStock untuk menghitung ulang
updateStock();
ui.alert("Transaksi berhasil dicatat!");
}
- Simpan proyek (ikon disket) dan beri nama, misal "Sistem Stok".
Langkah 3: Jalankan Fungsi
- Klik
Rununtuk menjalankan fungsiupdateStock. Pertama kali akan diminta izin – setujui. - Untuk memudahkan input transaksi, kita buat menu kustom:
- Di editor Apps Script, klik kanan pada file
Code.gsdan pilihProperties. - Di bagian
Triggers, tambahkan trigger untukonOpen(untuk membuat menu saat buka spreadsheet). - Atau langsung tambahkan fungsi
onOpen:
- Di editor Apps Script, klik kanan pada file
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Sistem Stok')
.addItem('Tambah Transaksi', 'addTransaction')
.addItem('Update Stok', 'updateStock')
.addToUi();
}
Simpan lalu reload spreadsheet. Kamu akan melihat menu "Sistem Stok" di toolbar.
Langkah 4: Menggunakan Sistem
- Setiap kali ada barang masuk atau keluar, klik menu
Sistem Stok > Tambah Transaksi. - Masukkan kode barang, jenis (masuk/keluar), dan jumlah. Otomatis stok akan terupdate dan tercatat di riwayat.
- Kolom "Peringatan" akan otomatis terisi "Stok Menipis" jika stok kurang dari 5 (kamu bisa ubah angkanya di kode).
- Kamu juga bisa menjadwalkan fungsi
updateStockberjalan otomatis setiap jam melalui trigger time-driven.
Penutup
Dengan sistem sederhana ini, kamu nggak perlu khawatir lagi soal stok barang. Semua tercatat rapi, otomatis, dan bisa diakses dari mana saja lewat Google Sheets. Mulai sekarang, urusan stok jadi lebih mudah dan akurat.
Coba praktikkan langkah-langkah di atas, dan sesuaikan dengan kebutuhan tokomu. Kalau ada fitur yang ingin ditambahkan, kamu bisa modifikasi sendiri kodenya. Selamat mencoba!