FaizBlog LogoFaizBlog
Back to all articles
Google Apps ScriptInvoiceGoogle SheetsOtomatisasiPDF

Cara Membuat Invoice Otomatis dari Google Sheets (Lengkap dengan Kode)

Panduan step-by-step membuat sistem invoice otomatis: Google Sheets + Docs + Apps Script → PDF invoice terkirim ke email pelanggan otomatis. Gratis, tanpa server.

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.

Alur invoice otomatis

Yang Akan Kita Bangun

Sistem invoice otomatis dengan komponen berikut:

KomponenFungsi
Google SheetsMenyimpan data pelanggan & pesanan
Google DocsTemplate invoice dengan placeholder
Apps ScriptOtak otomatisasi (JavaScript)
GmailPengirim email invoice
Google DrivePenyimpanan hasil PDF

Semua produk Google, semua terintegrasi, semua gratis.

Langkah 1: Siapkan Google Sheets

Buat spreadsheet baru dengan kolom seperti ini:

TanggalNamaEmailItemJumlahHargaTotal
2025-01-15Budibudi@mail.comWebsite150000005000000

Kolom Total bisa pakai rumus =E2*F2 supaya otomatis.

Langkah 2: Buat Template Invoice di Google Docs

Template invoice dengan placeholder

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

3 cara trigger invoice otomatis

Ada 3 pilihan cara menjalankan otomatis:

TriggerKapan JalanCocok Untuk
On Form SubmitSaat Google Form diisiOrder online / registrasi
On EditSaat sel di Sheets diubahUpdate manual admin
Time TriggerJadwal harian/jamBatch invoice tiap pagi

Cara pasang: di editor Apps Script → ikon ⏰ TriggersAdd 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.formatDate untuk format tanggal Indonesia.
  • Jangan hardcode email API key — pakai PropertiesService kalau perlu.

Batasan Kuota

LayananKuota Gratis / Hari
Email GmailApp100/hari
Copy file DriveTidak dibatasi (tapi wajar)
Waktu eksekusi 1x6 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!