Cara Kirim Email Otomatis dari Google Sheets (Apps Script)
Blog/Tutorial Excel & Sheets/Cara Kirim Email Otomatis dari Google Sheets (Apps Script)

Cara Kirim Email Otomatis dari Google Sheets (Apps Script)

BimaBima
·11 Juni 2026·10 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Google Sheets bisa kirim email otomatis lewat Apps Script pakai fungsi MailApp.sendEmail. Kamu tinggal siapkan kolom email dan isi pesan di sheet, tulis skrip yang baca tiap baris, lalu pasang trigger biar jalan otomatis tiap hari. Kuota gratisnya 100 email per hari buat akun Gmail biasa dan 1.500 per hari buat Google Workspace.

Google Sheets bisa kirim email sendiri. Gak perlu Zapier, gak perlu bayar apa-apa — cukup Apps Script yang udah nempel gratis di tiap spreadsheet.

Kasus paling sering: kirim reminder tagihan ke pelanggan, kirim laporan mingguan ke tim, atau kirim notifikasi kalau stok barang menipis.

Setup pertama makan waktu sekitar 15 menit. Setelah itu jalan sendiri tiap hari.

Di tutorial ini kamu bakal bikin sistem reminder tagihan yang jalan otomatis tiap pagi jam 8, lengkap sama pengaman biar email gak kekirim dobel.

Apa itu Apps Script?

Apps Script adalah editor kode bawaan Google yang bisa ngontrol Sheets, Gmail, Drive, dan Calendar. Bahasanya JavaScript.

Kamu gak perlu install apa-apa. Buka Google Sheets, klik menu Ekstensi, pilih Apps Script. Editornya langsung kebuka di tab baru.

Kalau kamu pernah nulis rumus IF di spreadsheet, kamu udah punya modal buat paham logika skrip ini. Bedanya cuma di sintaks.

Gimana cara siapkan sheet-nya?

Bikin sheet dengan lima kolom persis kayak gini:

A: NamaB: EmailC: TagihanD: Jatuh TempoE: Status Kirim
Siti Rahayusiti@contoh.com4500002026-06-15
Budi Santosobudi@contoh.com12000002026-06-16
Ayu Lestariayu@contoh.com2750002026-06-18

Kolom E dibiarkan kosong. Itu yang bakal diisi skrip setelah email terkirim.

Kolom E ini yang paling penting dari semuanya. Tanpa dia, tiap kali skrip jalan, Siti bakal dapat email tagihan yang sama berulang-ulang.

Gimana cara nulis skrip kirim emailnya?

Buka Ekstensi, terus Apps Script. Hapus kode contoh yang ada, ganti sama ini:

function kirimReminderTagihan() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Tagihan');
  const data = sheet.getDataRange().getValues();

  // Mulai dari baris 2 (baris 1 itu header)
  for (let i = 1; i < data.length; i++) {
    const nama       = data[i][0];
    const email      = data[i][1];
    const tagihan    = data[i][2];
    const jatuhTempo = data[i][3];
    const status     = data[i][4];

    // Lewati kalau udah pernah dikirim
    if (status !== '') continue;

    // Lewati kalau emailnya kosong
    if (!email) continue;

    const subjek = 'Pengingat Tagihan - Jatuh Tempo ' +
      Utilities.formatDate(new Date(jatuhTempo), 'Asia/Jakarta', 'd MMM yyyy');

    const pesan =
      'Halo ' + nama + ',\n\n' +
      'Tagihan kamu sebesar Rp ' + tagihan.toLocaleString('id-ID') + '\n' +
      'jatuh tempo tanggal ' +
      Utilities.formatDate(new Date(jatuhTempo), 'Asia/Jakarta', 'd MMMM yyyy') + '.\n\n' +
      'Terima kasih,\nToko Berkah';

    MailApp.sendEmail(email, subjek, pesan);

    // Tandai sudah terkirim
    sheet.getRange(i + 1, 5).setValue(new Date());
  }
}

Simpan pakai Ctrl+S. Kasih nama proyeknya bebas.

Bagian mana yang perlu kamu pahami?

Empat baris yang bikin semuanya jalan.

getDataRange().getValues() — ini narik semua isi sheet jadi array dua dimensi. Baris pertama indeksnya 0, jadi loop-nya mulai dari 1 buat lewatin header.

if (status !== '') continue; — ini pengaman anti-dobel. Kalau kolom E udah ada isinya, skrip lompat ke baris berikutnya.

MailApp.sendEmail(email, subjek, pesan) — tiga argumen: ke siapa, judulnya apa, isinya apa. Sesederhana itu.

sheet.getRange(i + 1, 5).setValue(new Date()) — nulis waktu kirim ke kolom E. Angka 5 itu nomor kolom E, dan i + 1 soalnya baris di spreadsheet mulai dari 1 sementara array mulai dari 0.

Gimana cara jalanin dan kasih izin?

Di editor Apps Script, klik tombol Run. Pertama kali, Google bakal minta izin.

  1. Muncul dialog Authorization required. Klik Review permissions.
  2. Pilih akun Google kamu.
  3. Muncul peringatan "Google hasn't verified this app". Klik Advanced, terus Go to [nama proyek] (unsafe).
  4. Klik Allow.

Peringatan "unsafe" itu normal. Skripnya kamu yang tulis sendiri, jadi Google belum meninjaunya — wajar.

Setelah Allow, skrip langsung jalan. Cek inbox penerima, terus cek kolom E di sheet — harusnya udah keisi tanggal.

Gimana cara bikin jalan otomatis tiap hari?

Skrip di atas masih harus diklik manual. Biar jalan sendiri, pasang trigger.

  1. Di editor Apps Script, klik ikon jam alarm (Triggers) di sidebar kiri.
  2. Klik Add Trigger di pojok kanan bawah.
  3. Choose which function to run: kirimReminderTagihan
  4. Select event source: Time-driven
  5. Select type of time based trigger: Day timer
  6. Select time of day: 8am to 9am
  7. Klik Save.

Selesai. Tiap pagi antara jam 8 dan 9, skrip jalan sendiri dan kirim email ke baris yang kolom E-nya masih kosong.

Perlu diingat, waktu trigger ngikutin timezone spreadsheet. Cek di File, Settings, pastikan timezone-nya Jakarta.

Contoh kasus: toko_berkah kirim 34 reminder per hari

Aku pasang sistem ini buat sebuah warung sembako yang punya 127 pelanggan langganan bulanan. Sebelumnya, pemiliknya nagih lewat WhatsApp satu-satu.

Sebelum otomatisSesudah otomatis
45 menit per hari nulis pesan0 menit — jalan sendiri jam 8
Rata-rata 12 pelanggan kelewat per bulan0 kelewat
Pembayaran tepat waktu: 58%Pembayaran tepat waktu: 79%

Rata-rata 34 email terkirim per hari. Masih jauh di bawah kuota gratis 100 email.

Yang paling kerasa bukan hemat 45 menitnya. Yang kerasa naiknya pembayaran tepat waktu 21 poin — gara-gara reminder-nya konsisten, bukan tergantung mood.

Apa kesalahan umum waktu setup email otomatis?

Lupa kolom status. Ini nomor satu. Tanpa penanda terkirim, tiap trigger jalan semua orang dapat email lagi. Pelanggan kamu bakal dapat 30 email tagihan dalam sebulan.

Nulis nama sheet yang salah. getSheetByName('Tagihan') harus sama persis, termasuk huruf besar-kecil dan spasi. "tagihan" beda dari "Tagihan".

Nembus kuota harian. Kalau daftar kamu 300 baris dan akunnya Gmail gratis, skrip bakal error di email ke-101. Tapi kolom status nyelametin kamu — besoknya skrip lanjut dari yang belum kekirim.

Gak tes ke email sendiri dulu. Ganti semua alamat di kolom B jadi email kamu, jalanin, lihat hasilnya. Baru masukkan alamat asli. Email yang udah terkirim gak bisa ditarik.

Format tanggal berantakan. Kalau kolom D dibaca sebagai teks bukan tanggal, Utilities.formatDate bakal error. Pastikan formatnya tanggal beneran di spreadsheet.

FAQ

Berapa banyak email yang bisa dikirim per hari dari Google Sheets?

Akun Gmail gratis dapat kuota 100 email per hari lewat Apps Script. Akun Google Workspace berbayar dapat 1.500 per hari. Kuota ini dihitung per 24 jam bergulir. Kalau skrip nyoba kirim melebihi kuota, dia bakal error dan berhenti — makanya kolom status terkirim penting.

Apakah email yang dikirim Apps Script masuk spam?

Emailnya dikirim dari alamat Gmail kamu sendiri, jadi reputasinya sama kayak email manual. Yang bikin masuk spam biasanya isinya: subjek terlalu promosi atau kirim ke ratusan orang yang gak pernah kontak kamu. Buat reminder tagihan ke pelanggan yang udah kenal, hampir gak pernah kena.

Apps Script bisa kirim email dengan lampiran?

Bisa. Pakai parameter attachments di MailApp.sendEmail, isinya array file dari Google Drive. Kamu juga bisa bikin PDF dari sheet-nya sendiri dan lampirkan. Ukuran total lampiran maksimal 25 MB, sama kayak batas Gmail biasa.

Gimana cara mastiin email gak kekirim dua kali?

Pakai kolom status. Setelah skrip berhasil kirim ke satu baris, tulis tanggal di kolom itu. Di awal loop, skrip cek dulu kolom status — kalau udah terisi, lewati barisnya. Tanpa ini, tiap trigger jalan semua pelanggan dapat email yang sama lagi.

Perlu bayar buat pakai Apps Script?

Nggak. Apps Script gratis buat semua akun Google. Yang dibatasi cuma kuotanya: 100 email per hari, waktu eksekusi 6 menit per run. Buat kebutuhan UMKM kayak kirim 30 reminder tiap pagi, kuota gratis lebih dari cukup.

Langkah berikutnya

Yang paling penting dari tutorial ini: tes ke email sendiri dulu, dan jangan pernah lupa kolom status.

Kalau udah jalan, kamu bisa kembangin. Kirim cuma ke tagihan yang jatuh tempo 3 hari lagi. Tambahin lampiran PDF invoice. Kirim laporan mingguan ke tim.

Semua fungsi MailApp yang tersedia ada di dokumentasi resmi Google Apps Script.

Buat logika kondisi di dalam skrip, konsepnya sama kayak fungsi IF dan VLOOKUP yang udah kamu kenal. Dan kalau mau lihat cara otomatisasi spreadsheet yang lain, lanjut baca Checklist Data Cleaning buat mastiin data yang masuk ke skrip udah bersih.

Buka spreadsheet kamu sekarang. Lima belas menit, jadi.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel Terkait

Template Laporan Penjualan Excel: Struktur yang Dipakai Analis
Tutorial Excel & Sheets
11 Juli 2026•10 menit baca

Template Laporan Penjualan Excel: Struktur yang Dipakai Analis

Template laporan penjualan yang bener cuma butuh 3 sheet. Yang bikin laporan orang rusak biasanya karena data mentah dan hasil dicampur di satu tempat.

BimaBima
Cara Menghubungkan Google Sheets ke Looker Studio
Tutorial Excel & Sheets
8 Juli 2026•10 menit baca

Cara Menghubungkan Google Sheets ke Looker Studio

Nyambungin Google Sheets ke Looker Studio cuma butuh 5 menit. Yang bikin lama itu datanya belum rapi. Ini urutan yang bener.

BimaBima
Cara Share Google Sheets dengan Aman: Permission & Protected Range
Tutorial Excel & Sheets
5 Juli 2026•9 menit baca

Cara Share Google Sheets dengan Aman: Permission & Protected Range

Panduan step by step share Google Sheets tanpa bikin rumus kehapus atau data gaji bocor — dari level permission, protected range, sampai audit siapa yang buka.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

Copyright © 2026 - All rights reserved

LINKS
SupportPricingDatasetBlogAffiliates
LEGAL
Terms of servicesPrivacy policy
Ngulik Data
DatasetLeaderboardBlogStore