Pendahuluan
Di era digital saat ini, hampir semua bisnis bergantung pada data untuk mengambil keputusan. Mulai dari bisnis kecil, UMKM, hingga perusahaan besar, mayoritas menyimpan data transaksi mereka di spreadsheet. Salah satu tools yang paling banyak digunakan adalah Google Sheets.
Namun, sebagian besar pengguna hanya memanfaatkan Google Sheets untuk:
- Menyimpan data
- Menggunakan rumus sederhana
- Membuat laporan manual
- Menghitung total dan rata-rata secara konvensional
Padahal, Google Sheets dapat diubah menjadi sistem analisis otomatis hanya dengan menambahkan satu tombol.
Bayangkan kamu memiliki ribuan data transaksi. Setiap minggu atau setiap bulan kamu harus :
- Menghitung total revenue
- Menghitung jumlah transaksi
- Mengetahui berapa customer baru
- Mengidentifikasi customer returning
- Membuat ringkasan performa bisnis
Jika semua dilakukan secara manual, tentu memakan waktu dan berisiko terjadi kesalahan
Solusinya adalah membuat tombol generate insight otomatis menggunakan Google Apps Script
Dalam artikel ini, kamu akan belajar secara lengkap:
- Apa itu Google Apps Script
- Bagaimana cara membuat tombol di Google Sheets
- Cara menghubungkan tombol dengan script
- Cara menghasilkan insight otomatis dari data
- Troubleshooting umum
- Pengembangan lanjutan
Tutorial ini cocok untuk:
- Data analyst pemula
- Mahasiswa IT
- Business owner
- Digital marketer
- Freelancer
- Tim operasional
Mari kita mulai dari konsep dasarnya.
Mengapa Perlu Membuat Tombol Otomatis di Google Sheets?
Sebelum masuk ke teknis, penting memahami manfaatnya
1. Menghemat Waktu Analisis Data
Tanpa otomatisasi, kamu harus membuat rumus SUM, COUNT, AVERAGE, dan filter manual setiap kali data bertambah. Dengan tombol otomatis, cukup satu klik dan laporan langsung diperbarui.
2. Mengurangi Risiko Human Error
Kesalahan dalam drag formula atau salah filter bisa menyebabkan laporan tidak akurat. Otomatisasi membuat proses lebih konsisten.
3. Meningkatkan Profesionalitas Laporan
Spreadsheet biasa akan terlihat seperti aplikasi analitik interaktif
4. Cocok untuk Laporan Berkala
Jika kamu membuat laporan mingguan atau bulanan, sistem ini sangat membantu
Kita akan membuat tombol bernama Generate Insight
Ketika tombol diklik, sistem akan otomatis:
- Menghitung Total Revenue
- Menghitung Total Transaksi
- Menghitung Average Transaction Value
- Menghitung jumlah Customer Baru
- Menghitung jumlah Customer Returning
- Membuat ringkasan insight otomatis
Persiapan Data
Sebelum lanjut, pastikan data memiliki struktur yang rapi. Pada tutorial ini, kita akan menggunakan data penjualan cafe dari kaggle sebagai bahan praktik.
Cleaning data terlebih dahulu setelah itu import ke dalam spreadsheet.
Mengenal Google Apps Script
Google Apps Script adalah platform berbasis JavaScript yang memungkinkan kita menambahkan fitur otomatisasi pada produk Google seperti:
- Google Sheets
- Google Docs
- Gmail
- Google Forms
Dengan Apps Script, kita bisa:
- Membaca data
- Mengolah data
- Menulis hasil ke sheet
- Membuat tombol interaktif
- Membuat sistem otomatis
Dan semuanya gratis.
Langkah-Langkah Membuat Tombol Generate Insight
Langkah 1: Membuka Google Apps Script

- Buka spreadsheet di Google Sheets
- Klik menu Extensions
- Pilih Apps Script
- Tab baru akan terbuka
- Hapus kode default
Langkah 2: Menambahkan Script Generate Insight
Masukkan kode berikut :
function generateInsight() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getActiveSheet();
const lastRow = sheet.getLastRow();
const lastCol = sheet.getLastColumn();
if (lastRow <= 1) {
SpreadsheetApp.getUi().alert("Data tidak ditemukan!");
return;
}
const data = sheet.getRange(1,1,lastRow,lastCol).getValues();
const rows = data.slice(1);
let totalRevenue = 0;
let totalTransactions = rows.length;
let productRevenue = {};
let paymentRevenue = {};
let paymentCount = {};
let monthlyRevenue = {};
let orderTypeCount = {};
rows.forEach(row => {
const product = row[1] || "Unknown";
const total = Number(row[4]) || 0;
const payment = row[5] || "Unknown";
const orderType = row[6] || "Unknown";
const date = new Date(row[7]);
totalRevenue += total;
productRevenue[product] = (productRevenue[product] || 0) + total;
paymentRevenue[payment] = (paymentRevenue[payment] || 0) + total;
paymentCount[payment] = (paymentCount[payment] || 0) + 1;
orderTypeCount[orderType] = (orderTypeCount[orderType] || 0) + 1;
if (!isNaN(date)) {
const monthKey = date.getFullYear() + "-" + (date.getMonth()+1);
monthlyRevenue[monthKey] = (monthlyRevenue[monthKey] || 0) + total;
}
});
const avgRevenue = totalRevenue / totalTransactions;
// ===== PRODUCT ANALYSIS =====
const sortedProducts = Object.entries(productRevenue)
.sort((a,b) => b[1] - a[1]);
const topProduct = sortedProducts[0][0];
const bottomProduct = sortedProducts[sortedProducts.length - 1][0];
const concentrationRatio = (sortedProducts[0][1] / totalRevenue * 100);
// ===== PAYMENT =====
const unknownPaymentRate = ((paymentCount["Unknown"] || 0) / totalTransactions * 100);
// ===== ORDER TYPE =====
const unknownOrderRate = ((orderTypeCount["Unknown"] || 0) / totalTransactions * 100);
// ===== MONTHLY =====
const sortedMonths = Object.entries(monthlyRevenue)
.sort((a,b) => new Date(a[0]) - new Date(b[0]));
let growthNarrative = "";
let prev = null;
sortedMonths.forEach(m => {
if (prev !== null) {
const growth = ((m[1] - prev) / prev * 100);
growthNarrative += `• Pada ${m[0]} terjadi perubahan ${growth.toFixed(1)}% dibanding bulan sebelumnya.\n`;
}
prev = m[1];
});
const bestMonth = sortedMonths.sort((a,b)=>b[1]-a[1])[0];
// ===== STRATEGIC INTERPRETATION =====
let strategicFocus = "";
if (unknownPaymentRate > 20 || unknownOrderRate > 30) {
strategicFocus += "Perbaikan sistem pencatatan transaksi menjadi prioritas utama jangka pendek.\n";
}
if (avgRevenue < 9000) {
strategicFocus += "Optimalisasi Average Transaction Value melalui upselling dan bundling perlu segera diterapkan.\n";
}
if (concentrationRatio > 35) {
strategicFocus += "Diversifikasi revenue diperlukan untuk mengurangi risiko ketergantungan pada satu produk.\n";
}
if (strategicFocus === "") {
strategicFocus = "Struktur bisnis relatif sehat dan dapat difokuskan pada ekspansi pertumbuhan.";
}
// ===== FINAL REPORT =====
const report = `
========================================================
LAPORAN ANALISIS KINERJA BISNIS
========================================================
I. EXECUTIVE SUMMARY
Berdasarkan analisis terhadap ${totalTransactions} transaksi,
bisnis menghasilkan total revenue sebesar Rp ${totalRevenue.toLocaleString("id-ID")}
dengan rata-rata nilai transaksi sebesar Rp ${avgRevenue.toLocaleString("id-ID")}.
Struktur revenue menunjukkan tingkat konsentrasi sebesar
${concentrationRatio.toFixed(1)}% pada produk utama,
yang mengindikasikan distribusi pendapatan relatif terdiversifikasi.
--------------------------------------------------------
II. ANALISIS PRODUK
Produk dengan kontribusi tertinggi adalah ${topProduct},
sementara produk dengan kontribusi terendah adalah ${bottomProduct}.
Distribusi ini menunjukkan bahwa meskipun terdapat produk dominan,
bisnis tidak bergantung secara ekstrem pada satu kategori saja.
--------------------------------------------------------
III. ANALISIS OPERASIONAL
Sebesar ${unknownPaymentRate.toFixed(1)}% transaksi tidak memiliki
metode pembayaran yang valid.
Selain itu, ${unknownOrderRate.toFixed(1)}% transaksi
tidak memiliki informasi channel order yang jelas.
Kondisi ini menunjukkan adanya kelemahan dalam kontrol operasional
dan sistem pencatatan transaksi.
--------------------------------------------------------
IV. ANALISIS TREND & PERTUMBUHAN
Bulan dengan performa terbaik adalah ${bestMonth ? bestMonth[0] : "-"}
dengan revenue sebesar Rp ${bestMonth ? bestMonth[1].toLocaleString("id-ID") : "-"}.
${growthNarrative || "Data pertumbuhan bulanan belum cukup untuk dianalisis lebih lanjut."}
Secara umum, pertumbuhan masih bersifat fluktuatif dan belum menunjukkan
tren peningkatan yang konsisten.
--------------------------------------------------------
V. DIAGNOSIS STRATEGIS
${strategicFocus}
--------------------------------------------------------
VI. REKOMENDASI STRATEGIS
1. Audit dan standarisasi sistem input transaksi.
2. Implementasi strategi upselling dan bundling produk.
3. Pengembangan program loyalitas pelanggan.
4. Evaluasi produk dengan performa rendah untuk repositioning.
5. Monitoring pertumbuhan bulanan secara konsisten.
--------------------------------------------------------
VII. KESIMPULAN
Bisnis berada dalam kondisi stabil dengan struktur revenue yang cukup sehat.
Namun untuk mencapai pertumbuhan yang lebih agresif dan berkelanjutan,
diperlukan perbaikan pada aspek operasional serta optimalisasi nilai transaksi.
Dengan implementasi strategi yang tepat, bisnis memiliki potensi
untuk meningkatkan profitabilitas dalam 3–6 bulan ke depan.
========================================================
End of Report
========================================================
`;
let insightSheet = ss.getSheetByName("INSIGHT");
if (!insightSheet) {
insightSheet = ss.insertSheet("INSIGHT");
}
insightSheet.clear();
insightSheet.getRange("A1").setValue(report);
}
Kemudian:
- Klik Save
- Beri nama project
- Klik Run pertama kali
- Berikan izin akses
Script sekarang aktif
Langkah 3: Membuat Tombol di Spreadsheet

- Kembali ke spreadsheet
- Klik Insert
- Pilih Drawing
- Buat shape (misalnya persegi panjang)
- Tulis: Generate Insight
- Klik Save and Close
- Klik kanan pada tombol tersebut
- Klik titik tiga
- Pilih Assign Script
- Ketik :
generateInsight


Langkah 4: Buat sheet baru
Buat sheet baru dengan nama : INSIGHT dimana hasil dari insight yang sudah di generate nanti akan tampil di sheet tersebut
Cara Menggunakan Tombol
Setiap kali data diperbarui :
- Pastikan tidak ada error pada data
- Klik tombol Generate Insight
- Insight otomatis muncul di kolom H
Proses hanya membutuhkan beberapa detik
Troubleshooting Umum
Script Tidak Bisa Dijalankan
Pastikan kamu sudah memberikan izin akses
Tombol Tidak Bisa Assign Script
Pastikan nama function sama persis : generateInsight
Data Tidak Terhitung
Periksa apakah kolom Total benar-benar angka.
Error Karena Kolom Berubah
Jika posisi kolom berubah, sesuaikan index berikut :
var customerId = data[i][0];
var total = data[i][5];
Pengembangan Lanjutan
Setelah memahami dasar ini, kamu bisa mengembangkan fitur seperti :
- Perbandingan revenue bulan ini vs bulan lalu
- Customer Lifetime Value
- Notifikasi otomatis jika penjualan turun
- Pengiriman laporan otomatis via email
- Integrasi dashboard visual
Dengan pendekatan ini, Google Sheets bisa berubah menjadi mini business intelligence tool
Kesimpulan
Membuat tombol generate insight otomatis di Google Sheets adalah cara sederhana namun sangat powerful untuk meningkatkan efisiensi analisis data.
Dengan memanfaatkan Google Apps Script, kamu dapat :
- Menghemat waktu
- Mengurangi kesalahan manual
- Membuat laporan lebih profesional
- Mengubah spreadsheet menjadi alat analitik interaktif
Langkahnya cukup jelas :
- Siapkan data dengan struktur rapi
- Tambahkan script di Apps Script
- Buat tombol
- Hubungkan tombol dengan script
- Gunakan tombol untuk menghasilkan insight otomatis
Dengan satu klik, seluruh perhitungan dapat dilakukan dalam hitungan detik
Jika kamu rutin membuat laporan penjualan atau analisis data, teknik ini akan sangat membantu dalam jangka panjang.