Jadi saya mau bikin aplikasi untuk stok gudang kantor. Aplikasinya ingin bisa dilihat secara live, bukan hanya oleh admin gudang, tapi juga oleh bagian pembelian, kepala logistik, marketing, dan manajer, tanpa harus tanya-tanya ke admin.
Karena saya cukup familier dengan hal ini, usulan saya adalah memakai Google Sheets, dengan otak dan script-nya memakai Apps Script, lalu dibagikan lewat Google Drive. Admin gudang bisa mengedit, sedangkan bagian lain cukup melihat.
Mungkin Anda bertanya, memangnya Google Sheets bisa jadi aplikasi? Jawabannya bisa, asal ada script yang bekerja di belakangnya. Di artikel ini saya jelaskan dulu apa itu Google Sheets dan Apps Script, lalu langkah memasangnya, fitur yang jalan sendiri, dan bagian script mana yang memicu fitur itu. File script-nya bisa didownload di bagian akhir, beserta video tutorialnya.

Apa itu Google Sheets dan Apps Script
Google Sheets adalah spreadsheet buatan Google yang jalan di browser. Bentuknya mirip Excel, tapi filenya tersimpan di Google Drive, jadi pemilik akun bisa membuka file yang sama dari laptop atau HP. File juga bisa dibagikan dengan orang lain. Perubahan dari satu orang langsung terlihat oleh yang lain di perangkat masing-masing. Ini keunggulan dari Google Sheets yang paling saya sukai.
Apps Script adalah bahasa script dari Google untuk mengotomatiskan Google Sheets, Docs, Drive, dan layanan Google lainnya. Penulisannya mirip JavaScript. Script-nya menempel di file Google Sheets dan berjalan di server Google, bukan di laptop kita. Artinya, laptop admin tidak perlu menyala supaya aplikasinya tetap bekerja. Makanya sekarang Google Sheets bisa jadi aplikasi yang interaktif, canggih, dan tidak membosankan. Lebih fleksibel dan lebih banyak pilihan ketimbang macro VBA Excel karena Apps Script tetap jalan saat file dibuka dari browser atau HP, bisa dijalankan otomatis oleh trigger di server Google, dan bisa langsung terhubung dengan Gmail, Google Drive, dan Google Calendar. Macro VBA hanya bisa dijalankan di Excel versi desktop, tidak di Excel versi web maupun aplikasi Excel di HP.
Kalau keduanya digabung seperti yang saya lakukan, Google Sheets jadi tampilan dan tempat datanya, sedangkan Apps Script jadi otaknya. Admin cukup mengetik di sheet seperti biasa, lalu script yang menghitung stok, membuat kode barang, dan memindahkan barang yang habis.
Langkah membuat aplikasi stok gudang
Urutannya sama dengan yang saya lakukan di video. Semua langkah ini cukup dikerjakan sekali per file.
- Buka Google Drive, klik New, lalu pilih Google Sheets dan Blank spreadsheet.
- Ganti nama file di kiri atas. Di video saya beri nama Stock WAREHOUSE.
- Buka File, lalu Settings. Ubah Locale jadi Indonesia dan Time zone jadi Jakarta, lalu Save settings. Ini supaya tanggal tercatat dalam WIB.
- Buka menu Extensions, lalu Apps Script. Tab baru akan terbuka.
- Klik Untitled project di kiri atas dan ganti namanya. Di video saya beri nama Stock.
- Di file
Code.gs, hapus semua script bawaanfunction myFunction(), lalu paste seluruh isi file script yang bisa didownload di bagian akhir artikel ini. Simpan dengan Ctrl + S. - Pastikan dropdown fungsi di sebelah tombol Debug berisi
setup, lalu klik Run. - Akan muncul pop-up yang meminta izin otorisasi. Pilih akun Google Anda dan berikan izinnya. Kalau muncul peringatan aplikasi belum diverifikasi, itu karena script-nya kita buat sendiri, bukan aplikasi dari toko. Klik Advanced, lalu lanjutkan.
- Tunggu sampai Execution log menampilkan Execution completed.
- Kembali ke tab Google Sheets dan refresh halamannya.

Setelah di-refresh, file Google Sheets sudah punya empat sheet, dan di menu atas muncul menu baru Modification Tools.
| Sheet | Kegunaannya |
|---|---|
| Master | Melihat dan mencari barang beserta stoknya |
| Log Masuk | Mencatat barang masuk |
| Log Keluar | Mencatat barang keluar |
| Arsip | Menyimpan barang yang stoknya habis |
Admin tidak perlu mengisi stok di Master. Semua kerja admin cuma di dua sheet, yaitu Log Masuk dan Log Keluar. Master selalu dihitung ulang dari dua log itu.
Kalau mau ganti nama barang atau speknya karena sudah terlanjur tercatat lama dan tidak dapat di-Ctrl + Z lagi, baru itu penggantiannya dilakukan di sheet Master.
Supaya admin bisa edit dan orang lain hanya melihat
Pembagian aksesnya memakai tombol Share di kanan atas Google Sheets, sama seperti membagikan file Google biasa.
| Siapa | Akses yang dipilih |
|---|---|
| Admin gudang | Editor |
| Pembelian, procurement, kepala logistik, marketing, manajer | Viewer |
Yang diberi akses Viewer hanya bisa membuka file kapan saja dan melihat perubahan stok, tapi tidak bisa mengubah apa pun. Script-nya tetap berjalan atas nama pemilik file, jadi yang perlu memasang script hanya pemilik. Pada kasus ini, saya sebagai karyawan IT pembuat program adalah pemilik filenya, jadi saya juga bisa ubah kuantitasnya, tapi tidak saya lakukan karena alasan profesionalisme.
Fitur yang jalan secara otomatis
Mungkin Anda penasaran, bagaimana sheet biasa bisa bereaksi setiap kali admin mengetik? Kuncinya ada di fungsi setup. Fungsi itu memasang dua trigger: onEdit yang memanggil saatEdit setiap ada ketikan, paste, atau Ctrl + Z, dan onChange yang memanggil saatUbah saat ada baris yang dihapus atau disisipkan. Keduanya lalu menjalankan hitungUlang_, yang menghitung stok dari nol: total Log Masuk dikurangi total Log Keluar.
Dari situ, fitur-fiturnya bisa dijelaskan satu per satu.
Kode barang dan tanggal terisi sendiri. Di Log Masuk, begitu nama barang dan Qty Masuk terisi, script mencari barang yang sama di Master dan Arsip. Kalau tidak ketemu, kodeBaru_ membuat kode berikutnya, misalnya 0001, 0002, dan seterusnya. Kalau barangnya sudah pernah ada, kolom Kode diisi kode lama barang itu. Pencocokannya mengabaikan huruf besar kecil, spasi, titik, dan koma, jadi “Lakban bening” dan “lakban bening.” dianggap barang yang sama. Tanggal diisi tanggal hari itu kalau dibiarkan kosong.
Salah tulis cukup Ctrl + Z. Tekan Ctrl + Z sampai kembali ke tahap yang diinginkan, lalu tulis perubahannya, misalnya qty atau satuan. Ini bekerja di Log Masuk maupun Log Keluar. Alasannya, stok tidak ditambah atau dikurangi, tapi dihitung ulang dari semua baris log setiap ada perubahan. Jadi apa pun yang dibatalkan, hasilnya tetap benar. Hapus baris lewat klik kanan dan Delete row juga aman, karena ditangkap oleh saatUbah.
Log Keluar cukup pilih kode. Di Log Keluar, nama barang tidak perlu diketik lagi. Pilih kodenya dari dropdown, lalu nama dan spek yang sama dengan di Master muncul sendiri. Dropdown itu dibuat oleh setup dengan requireValueInRange yang mengambil daftar kode dari kolom A di Master.
Ganti nama barang cukup di Master. Kalau nama atau spek barang perlu diganti, edit saja di sheet Master. Script membaca Master sebagai katalog, lalu menyamakan nama dan spek di semua baris Log Masuk dan Log Keluar yang memakai kode itu. Satuan juga begitu: diganti di sheet mana pun, baik Master, Log Masuk, Log Keluar, maupun Arsip, satuan barang itu ikut berubah di semua sheet.
Peringatan kalau barang keluar lebih banyak dari stok. Kalau Qty Keluar lebih besar dari stok, kolom Status di Log Keluar jadi merah dengan pesan stok kurang. Ketikannya sengaja tidak ditolak, supaya Ctrl + Z tetap bisa dipakai. Selama Qty-nya belum dibetulkan, angka stok di Master tampil minus dengan warna merah. Begitu Qty-nya dibetulkan, warna merahnya hilang.

Barang habis pindah ke Arsip, dan kembali dengan kode lama. Barang yang stoknya jadi 0 pindah sendiri dari Master ke Arsip, lengkap dengan tanggal habisnya. Kalau barang itu masuk lagi lewat Log Masuk, script mengenalinya dari nama dan speknya, memakai kode awalnya, lalu memindahkannya kembali ke Master. Karena dropdown kode hanya berisi barang di Master, barang yang sedang di Arsip diisi dengan mengetik nama dan speknya, bukan memilih kode.

Kode dan Qty di Master dilindungi. Kolom Kode dan Qty di Master diberi proteksi berupa peringatan. Kalau ada yang tetap mengetik di situ, script mengembalikan angka yang benar pada hitungan berikutnya. Kalau tampilan Master terlihat aneh, buka menu Modification Tools lalu klik Hitung Ulang Stok.
Daftar pemicu di dalam script
Saya rangkum supaya Anda tahu harus melihat bagian mana kalau ingin mengubah sesuatu. Untuk penjelasan lebih dalam tentang trigger, Anda bisa membaca dokumentasi resmi trigger Apps Script.
| Fitur | Bagian script |
|---|---|
| Hitung ulang saat mengetik, paste, Ctrl + Z | saatEdit lewat trigger onEdit |
| Hitung ulang saat baris dihapus | saatUbah lewat trigger onChange |
| Kode baru otomatis | kodeBaru_ |
| Mengenali barang yang sama | kunciIdentitas_ |
| Dropdown kode di Log Keluar | requireValueInRange di setup |
| Peringatan stok kurang | statusBaris_ |
| Pindah ke Arsip dan kembali ke Master | langkah 9 di hitungStok_ |
| Menu Hitung Ulang Stok | onOpen dan tombolHitungUlang |
Batasan yang perlu Anda tahu
- Jangan mengganti nama empat sheet utama. Kalau perlu nama lain, samakan juga di bagian
CONFIGpaling atas script. - Pengecekan stok kurang memakai total masuk dikurangi total keluar, tanpa melihat urutan tanggal.
- Akun Google gratis punya kuota waktu menjalankan script per hari. Untuk pencatatan gudang kantor biasa, kuota itu masih jauh dari habis.
- Satu file untuk satu lokasi gudang. Kalau ada dua gudang, buat dua file dengan cara yang sama.
Video tutorialnya
Semua langkah di atas saya rekam dari awal: membuat file, memasang script, menjalankan setup, lalu mencoba Log Masuk, Log Keluar, peringatan stok kurang, dan barang yang pindah ke Arsip.
Download script stok gudang
Script-nya saya siapkan dalam satu file teks. Download filenya, buka dengan Notepad, tekan Ctrl + A lalu Ctrl + C, kemudian paste ke Code.gs seperti di langkah ke-6.
Kalau mau versi bahasa Inggrisnya, script ini bisa didownload dari repo GitHub saya, AutoStock. Isi script, posisi kolom, dan tata letaknya sama persis, hanya bahasanya yang berbeda, karena repo GitHub saya memang khusus untuk pemakai internasional. Contohnya, sheet Log Masuk di sana bernama Stock In.