FaizBlog LogoFaizBlog
Back to all articles
Google Apps ScriptEmail MarketingMail MergeGmailOtomatisasi

Cara Mengirim Email Massal Otomatis dengan Google Apps Script (Mail Merge)

Panduan lengkap Mail Merge dengan Google Sheets + Apps Script: kirim ratusan email personalisasi otomatis, gratis, dengan HTML dan attachment. Alternatif Mailchimp untuk bisnis kecil.

AI Insights

Generate a summary and suggested tags for this post.

Butuh kirim undangan, penawaran, newsletter, atau notifikasi ke banyak orang sekaligus tapi tetap personal (dengan nama tiap penerima)? Itu namanya Mail Merge — dan kamu bisa lakukan gratis pakai Google Sheets + Apps Script tanpa perlu Mailchimp, Sendgrid, atau layanan berbayar lainnya.

Artikel ini akan menuntun kamu membuat sistem mail merge dari nol dalam 15 menit.

Cara kerja Mail Merge

Apa Itu Mail Merge?

Mail Merge adalah teknik mengirim satu template email ke banyak penerima dengan isi yang dipersonalisasi untuk masing-masing orang.

Contoh: kamu punya daftar 50 klien di Sheets. Alih-alih kirim satu-satu manual, kamu tulis 1 template:

"Halo {{nama}}, terima kasih atas kerjasama dengan {{perusahaan}}…"

Lalu script akan mengganti placeholder-nya sesuai data tiap baris, dan mengirim 50 email personal dalam hitungan detik.

Kenapa Pakai Apps Script?

AspekApps ScriptMailchimp / SendGrid
HargaGratisBayar bulanan
Setup15 menit1-2 jam
PengirimGmail kamu sendiriDomain pihak ketiga
Kuota100/hari (gratis) atau 1.500/hari (Workspace)Ribuan/bulan
Cocok untukBisnis kecil, freelancer, eventMarketing skala besar

Untuk kirim di bawah 100 email/hari, Apps Script sangat memadai.

Langkah 1: Siapkan Data di Sheets

Buat Google Sheets dengan kolom sesuai kebutuhan:

NamaEmailPerusahaanStatus
Budibudi@mail.comToko A
Sitisiti@mail.comToko B
Andiandi@mail.comToko C

Kolom Status akan diisi otomatis oleh script (mencegah double-send).

Langkah 2: Tulis Fungsi Mail Merge

Buka Extensions → Apps Script, paste kode berikut:

function kirimMassal() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const SUBJECT = "Penawaran Spesial untuk {{perusahaan}}";
  const TEMPLATE = `Halo {{nama}},

Terima kasih atas kepercayaan Anda kepada layanan kami.
Kami memiliki penawaran khusus untuk {{perusahaan}} bulan ini.

Silakan hubungi kami untuk detail lebih lanjut.

Salam hangat,
Tim Kami`;

  for (let i = 1; i < data.length; i++) {
    const [nama, email, perusahaan, status] = data[i];
    if (status === "Terkirim") continue;
    if (!email) continue;

    const isi = TEMPLATE
      .replace(/{{nama}}/g, nama)
      .replace(/{{perusahaan}}/g, perusahaan);
    const subject = SUBJECT.replace(/{{perusahaan}}/g, perusahaan);

    GmailApp.sendEmail(email, subject, isi);
    sheet.getRange(i + 1, 4).setValue("Terkirim");
    Utilities.sleep(1000); // beri jeda 1 detik antar email
  }
}

Klik Save (💾) → Run. Setujui izin akses Gmail. Selesai — email terkirim otomatis dengan personalisasi.

Fitur Tambahan: HTML Email

Kalau ingin email lebih menarik (dengan format, warna, link), pakai HTML body:

GmailApp.sendEmail(email, subject, "", {
  htmlBody: `
    <div style="font-family:Arial;color:#333">
      <h2 style="color:#FF6B35">Halo ${nama}!</h2>
      <p>Kami punya <b>penawaran khusus</b> untuk ${perusahaan}.</p>
      <a href="https://contoh.com" style="background:#FF6B35;color:#fff;padding:10px 20px;text-decoration:none;border-radius:6px">Klik di sini</a>
    </div>
  `
});

Fitur: Attachment PDF / Gambar

Untuk melampirkan file dari Drive:

const file = DriveApp.getFileById("ID_FILE_DI_DRIVE");
GmailApp.sendEmail(email, subject, isi, {
  attachments: [file.getAs("application/pdf")]
});

Batas Kuota (Wajib Tahu)

Batas kuota email harian

Kuota harian pengiriman GmailApp:

Tipe AkunKuota / Hari
Gmail biasa (@gmail.com)100 email
Google Workspace (bisnis)1.500 email
Waktu 1x runMaks 6 menit (~200-300 email)

Kalau butuh > 100/hari dan belum punya Workspace, split kirim jadi 2-3 hari.

4 Tips Mail Merge yang Aman

4 tips email massal aman

  • Personalisasi minimal 1 field (nama) — email jauh lebih engaging.
  • Selalu tandai Status = Terkirim setelah send, biar tidak double.
  • Batasi 100/hari untuk akun gratis — jangan sampai kuota habis di tengah.
  • Test kirim ke email sendiri dulu sebelum blast massal — cek format, link, dan attachment.

Pasang Trigger Otomatis (Opsional)

Untuk kirim otomatis tiap Senin pagi (misal newsletter mingguan):

  1. Di editor Apps Script → ikon ⏰ TriggersAdd Trigger.
  2. Pilih fungsi kirimMassal.
  3. Event source: Time-drivenWeek timerMonday7am-8am.
  4. Save. Selesai — script jalan otomatis tiap minggu tanpa disentuh.

Kesimpulan

Mail Merge dengan Apps Script cocok untuk:

  • Undangan event (webinar, gathering, launching)
  • Newsletter mingguan ke pelanggan
  • Notifikasi personal (tagihan, deadline, reminder)
  • Follow-up sales massal
  • Sertifikat lulus training dengan lampiran PDF

Dengan setup awal 15 menit, kamu punya sistem email marketing pribadi yang gratis dan fleksibel — tanpa langganan bulanan apapun.

Selamat blast email! 📧