Beranda/Artikel /Tutorial
Tutorial

Cara Otomasi Rekap Penjualan dengan Google Apps Script

ClovertechnoClovertechno 25 September 2026 3 menit baca

Tidak semua otomasi butuh server, Docker, dan n8n. Kalau seluruh hidup data Anda ada di Google Sheets — transaksi dicatat di sana, rekap dibaca dari sana — maka mesin otomasinya sudah Anda miliki tanpa sadar: Google Apps Script, lingkungan skrip yang tertanam gratis di setiap spreadsheet, berjalan di server Google, dan bisa dijadwalkan tanpa satu pun infrastruktur milik Anda. Tutorial ini memakainya untuk pekerjaan klasik: rekap penjualan harian yang menyusun dirinya sendiri dan tiba di email tiap pagi.

Diagram arsitektur AI automation untuk operasional bisnis: chat, email, form, dan dokumen masuk ke orkestrator n8n, diproses AI agent yang ditopang knowledge base, lalu menghasilkan aksi sistem, dashboard, dan notifikasi ke tim
Arsitektur AI automation untuk operasional bisnis yang dipakai Clovertechno.

Kapan Apps Script cukup dan n8n berlebihan

Garis batasnya praktis: kalau otomasi Anda berawal dan berakhir di ekosistem Google (Sheets, Gmail, Drive, Calendar), Apps Script adalah jalan terpendek — tanpa server yang dirawat, tanpa biaya. Begitu alurnya menyeberang ke banyak layanan luar — WhatsApp, database sendiri, AI, marketplace — n8n dengan ratusan integrasinya jadi rumah yang lebih tepat. Banyak bisnis memakai keduanya: Apps Script untuk urusan dalam-Google, n8n untuk orkestrasi lintas sistem. Yang keliru hanya satu: memasang infrastruktur besar untuk masalah yang selesai dengan tiga puluh baris skrip.

Langkah 1: Buka editor dan kenali strukturnya

Dari spreadsheet penjualan Anda (misal kolom: tanggal, item, qty, total di sheet bernama "Transaksi"), buka Extensions → Apps Script. Editor kode terbuka di tab baru — skrip ini "menempel" pada spreadsheet tadi dan bisa membacanya langsung tanpa autentikasi apa pun, karena berjalan sebagai Anda. Konsep yang perlu dikenal cuma dua: fungsi JavaScript biasa, dan objek SpreadsheetApp sebagai pintu ke sheet.

Langkah 2: Tulis fungsi rekap harian pertama

Ganti isi editor dengan:

function rekapKemarin() {
  const sheet = SpreadsheetApp.getActive().getSheetByName('Transaksi');
  const data = sheet.getDataRange().getValues(); // baris 0 = header

  const kemarin = new Date();
  kemarin.setDate(kemarin.getDate() - 1);
  const target = Utilities.formatDate(
    kemarin, 'Asia/Jakarta', 'yyyy-MM-dd');

  let omzet = 0, transaksi = 0;
  const perItem = {};

  for (let i = 1; i < data.length; i++) {
    const [tgl, item, qty, total] = data[i];
    const tglStr = Utilities.formatDate(
      new Date(tgl), 'Asia/Jakarta', 'yyyy-MM-dd');
    if (tglStr !== target) continue;
    transaksi++;
    omzet += Number(total) || 0;
    perItem[item] = (perItem[item] || 0) + (Number(qty) || 0);
  }

  const terlaris = Object.entries(perItem)
    .sort((a, b) => b[1] - a[1]).slice(0, 3)
    .map(([nama, q], i) => `${i + 1}. ${nama} (${q})`)
    .join('\n');

  return `Rekap ${target}\n` +
    `Transaksi: ${transaksi}\n` +
    `Omzet: Rp${omzet.toLocaleString('id-ID')}\n\n` +
    `Terlaris:\n${terlaris || '-'}`;
}

Uji dengan menambah fungsi kecil function coba() { Logger.log(rekapKemarin()); }, pilih coba di dropdown, klik Run. Eksekusi pertama meminta persetujuan izin — normal, ini Anda memberi izin pada skrip Anda sendiri. Hasil rekap muncul di log.

Langkah 3: Kirim hasil rekap ke email

Satu fungsi pembungkus, memakai layanan Gmail yang juga sudah tertanam:

function kirimRekapHarian() {
  MailApp.sendEmail({
    to: 'anda@usaha-anda.com',
    subject: 'Rekap penjualan harian',
    body: rekapKemarin()
  });
}

Jalankan sekali dan cek inbox. Mau ke beberapa orang? Pisahkan alamat dengan koma. Mau format lebih rapi? Ganti body dengan htmlBody berisi tabel HTML — tapi versi teks polos ini sudah dibaca orang dengan baik, dan yang dibaca mengalahkan yang indah.

Langkah 4: Jalankan otomatis dengan trigger waktu

Di panel kiri editor, buka Triggers (ikon jam) → Add Trigger: fungsi kirimRekapHarian, event source Time-driven, tipe Day timer, jam 6–7 pagi. Simpan. Sejak besok, rekap datang sendiri — tanpa server, tanpa cron, tanpa apa pun yang bisa Anda lupa nyalakan. Dua kebiasaan pelengkap: buka menu Executions sesekali untuk melihat riwayat jalan/gagalnya, dan di pengaturan trigger, aktifkan notifikasi error supaya kegagalan mengabari Anda lewat email.

Batas kuota dan kapan harus naik kelas

Gratisnya Apps Script datang dengan pagar: kuota harian untuk kirim email dan total waktu eksekusi, plus batas sekitar enam menit per eksekusi. Untuk rekap harian dari ribuan baris, pagar itu tidak akan pernah terasa. Ia mulai terasa ketika Anda memproses puluhan ribu baris dengan logika berat, butuh reaksi seketika (Apps Script kuat di jadwal, bukan di event real-time), atau alurnya mulai bercabang ke layanan non-Google. Saat gejala itu datang, itu bukan kegagalan — itu kelulusan: data Anda layak pindah ke database sungguhan dengan orkestrasi n8n di atasnya.

Dan kalau Anda ingin peta lengkapnya — proses mana pakai alat apa, mana yang layak diotomasi lebih dulu — mulai dari daftar ini, atau langsung minta tim kami memetakannya untuk bisnis Anda.

apps scriptgoogle sheetsrekaptutorial

Butuh software atau AI automation untuk bisnis Anda?

Ceritakan prosesnya, kami bantu petakan solusinya. Konsultasi awal gratis, tanpa komitmen.

Chat WhatsApp