AI Insights
Generate a summary and suggested tags for this post.
Bikin invoice satu-satu di Word atau Excel itu melelahkan — apalagi kalau pelanggan puluhan tiap minggu. Dengan Google Apps Script, kamu bisa buat sistem invoice otomatis: data masuk di Google Sheets → PDF invoice ter-generate → langsung terkirim ke email pelanggan, semua dalam hitungan detik dan gratis.
Artikel ini akan menuntun kamu step-by-step membuat sistemnya dari nol.

Yang Akan Kita Bangun
Sistem invoice otomatis dengan komponen berikut:
| Komponen | Fungsi |
|---|---|
| Google Sheets | Menyimpan data pelanggan & pesanan |
| Google Docs | Template invoice dengan placeholder |
| Apps Script | Otak otomatisasi (JavaScript) |
| Gmail | Pengirim email invoice |
| Google Drive | Penyimpanan hasil PDF |
Semua produk Google, semua terintegrasi, semua gratis.
Langkah 1: Siapkan Google Sheets
Buat spreadsheet baru dengan kolom seperti ini:
| Tanggal | Nama | Item | Jumlah | Harga | Total | |
|---|---|---|---|---|---|---|
| 2025-01-15 | Budi | budi@mail.com | Website | 1 | 5000000 | 5000000 |
Kolom Total bisa pakai rumus =E2*F2 supaya otomatis.
Langkah 2: Buat Template Invoice di Google Docs

Buat Google Docs baru — isinya template invoice dengan placeholder dalam bentuk {{nama_field}}:
FAKTUR
Kepada: {{nama}}
Email: {{email}}
Tanggal: {{tanggal}}
Nomor Invoice: {{nomor}}
Item: {{item}}
Jumlah: {{jumlah}}
Harga: Rp {{harga}}
-----------------------
TOTAL: Rp {{total}}Placeholder ini nanti akan diganti otomatis oleh script dengan data dari Sheets.
Langkah 3: Tulis Apps Script
Di Sheets: Extensions → Apps Script, lalu paste kode berikut:
function buatInvoice() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
const TEMPLATE_ID = "ID_GOOGLE_DOCS_TEMPLATE"; // ganti dengan ID template
const FOLDER_ID = "ID_FOLDER_DRIVE"; // ganti dengan ID folder tujuan
for (let i = 1; i < data.length; i++) {
const [tanggal, nama, email, item, jumlah, harga, total, status] = data[i];
if (status === "Terkirim") continue; // skip yang sudah dikirim
// Copy template
const copy = DriveApp.getFileById(TEMPLATE_ID)
.makeCopy(`Invoice-${nama}-${new Date().getTime()}`, DriveApp.getFolderById(FOLDER_ID));
const doc = DocumentApp.openById(copy.getId());
const body = doc.getBody();
// Replace placeholder
body.replaceText("{{nama}}", nama);
body.replaceText("{{email}}", email);
body.replaceText("{{tanggal}}", Utilities.formatDate(new Date(tanggal), "GMT+7", "dd MMM yyyy"));
body.replaceText("{{nomor}}", `INV-${i}-${new Date().getFullYear()}`);
body.replaceText("{{item}}", item);
body.replaceText("{{jumlah}}", jumlah);
body.replaceText("{{harga}}", harga.toLocaleString("id-ID"));
body.replaceText("{{total}}", total.toLocaleString("id-ID"));
doc.saveAndClose();
// Convert ke PDF & kirim email
const pdf = copy.getAs("application/pdf");
GmailApp.sendEmail(email, `Invoice untuk ${nama}`,
`Halo ${nama}, terlampir invoice pesanan Anda. Terima kasih!`,
{ attachments: [pdf], name: "Tim Invoice" });
// Tandai sebagai terkirim
sheet.getRange(i + 1, 8).setValue("Terkirim");
}
}Langkah 4: Cara Mendapatkan ID Template & Folder
ID Template Docs: buka Google Docs template, lihat URL:
https://docs.google.com/document/d/[ID_INI_YANG_DIAMBIL]/edit
ID Folder Drive: buka folder Drive, lihat URL:
https://drive.google.com/drive/folders/[ID_INI_YANG_DIAMBIL]
Paste ke variabel TEMPLATE_ID dan FOLDER_ID di kode.
Langkah 5: Pasang Trigger Otomatis

Ada 3 pilihan cara menjalankan otomatis:
| Trigger | Kapan Jalan | Cocok Untuk |
|---|---|---|
| On Form Submit | Saat Google Form diisi | Order online / registrasi |
| On Edit | Saat sel di Sheets diubah | Update manual admin |
| Time Trigger | Jadwal harian/jam | Batch invoice tiap pagi |
Cara pasang: di editor Apps Script → ikon ⏰ Triggers → Add Trigger → pilih fungsi buatInvoice → pilih event yang diinginkan.
Contoh Skenario Lengkap
Skenario 1: Toko Online Kecil
- Form order Google Form → jawaban masuk Sheets → trigger On Form Submit → invoice PDF terkirim ke email pembeli dalam 5 detik.
Skenario 2: Freelancer / Konsultan
- Isi manual di Sheets tiap deal → trigger On Edit kolom Status jadi "Kirim" → invoice terkirim.
Skenario 3: Kantor B2B
- Trigger Time Trigger setiap Senin pagi → semua invoice minggu lalu terkirim sekaligus.
Tips Penting
- Uji dulu manual dengan 1-2 baris dummy sebelum aktifkan trigger.
- Simpan kolom Status (Terkirim/Belum) supaya tidak double-send.
- Untuk invoice lebih rapi, pakai Google Docs (bukan Sheets) sebagai template.
- Gunakan
Utilities.formatDateuntuk format tanggal Indonesia. - Jangan hardcode email API key — pakai PropertiesService kalau perlu.
Batasan Kuota
| Layanan | Kuota Gratis / Hari |
|---|---|
| Email GmailApp | 100/hari |
| Copy file Drive | Tidak dibatasi (tapi wajar) |
| Waktu eksekusi 1x | 6 menit |
Untuk kuota lebih besar, upgrade ke Google Workspace.
Kesimpulan
Sistem invoice otomatis ini bisa menghemat 2-3 jam kerja seminggu untuk bisnis kecil. Setup awal butuh 30-60 menit, tapi setelahnya jalan tanpa disentuh lagi — kamu tinggal isi Sheets, invoice terkirim sendiri.
Ini contoh nyata bagaimana Apps Script mengubah spreadsheet biasa jadi sistem bisnis mini. Mulai bangun sekarang, dan rasakan bedanya di minggu pertama!
