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.

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?
| Aspek | Apps Script | Mailchimp / SendGrid |
|---|---|---|
| Harga | Gratis | Bayar bulanan |
| Setup | 15 menit | 1-2 jam |
| Pengirim | Gmail kamu sendiri | Domain pihak ketiga |
| Kuota | 100/hari (gratis) atau 1.500/hari (Workspace) | Ribuan/bulan |
| Cocok untuk | Bisnis kecil, freelancer, event | Marketing 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:
| Nama | Perusahaan | Status | |
|---|---|---|---|
| Budi | budi@mail.com | Toko A | |
| Siti | siti@mail.com | Toko B | |
| Andi | andi@mail.com | Toko 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)

Kuota harian pengiriman GmailApp:
| Tipe Akun | Kuota / Hari |
|---|---|
| Gmail biasa (@gmail.com) | 100 email |
| Google Workspace (bisnis) | 1.500 email |
| Waktu 1x run | Maks 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

- 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):
- Di editor Apps Script → ikon ⏰ Triggers → Add Trigger.
- Pilih fungsi
kirimMassal. - Event source: Time-driven → Week timer → Monday → 7am-8am.
- 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! 📧
