Cara Kirim Pesan WhatsApp Otomatis dari Google Sheets
Langkah mengirim pesan WhatsApp otomatis dari Google Sheets memakai Apps Script dan WhatsApp Cloud API resmi, plus aturan template dan opt-in.
Jawaban singkat
Simpan daftar penerima di Google Sheets, buat template pesan yang disetujui Meta, lalu pakai Apps Script untuk memanggil WhatsApp Cloud API per baris dan mencatat statusnya. Pastikan penerima sudah setuju dihubungi, karena di luar jendela 24 jam hanya pesan template yang boleh dikirim.
Daftar isi
- Apa yang perlu disiapkan?
- Langkah mengirim WhatsApp dari Google Sheets
- 1. Susun spreadsheet
- 2. Buat dan ajukan template pesan
- 3. Simpan token di Script Properties
- 4. Tempel skrip pengirim
- 5. Uji dengan satu nomor
- 6. Jadwalkan atau picu otomatis
- Bagaimana jika ingin tanpa kode?
- Pertanyaan yang sering diajukan
Punya daftar pelanggan di Google Sheets dan ingin mengirim pengingat atau konfirmasi lewat WhatsApp tanpa menyalin nomor satu per satu? Caranya: hubungkan spreadsheet ke WhatsApp Cloud API (API resmi dari Meta) dengan Google Apps Script, lalu biarkan skrip mengirim pesan untuk setiap baris dan menandai mana yang sudah terkirim.
Panduan ini memakai jalur resmi supaya nomor bisnismu aman. Ada juga jalur lewat alat otomasi seperti n8n, yang dibahas singkat di akhir.
Apa yang perlu disiapkan?
- Akun Meta Business dan aplikasi di Meta for Developers dengan produk WhatsApp aktif.
- Nomor telepon bisnis yang didaftarkan ke WhatsApp Business Platform. Nomor ini tidak bisa sekaligus dipakai di aplikasi WhatsApp Business biasa kecuali lewat fitur koeksistensi, jadi pakai nomor khusus bila ragu.
- Phone number ID dan access token dari dasbor aplikasi. Untuk pemakaian rutin, pakai token permanen dari system user, bukan token sementara.
- Google Sheets berisi data penerima.
Langkah mengirim WhatsApp dari Google Sheets
1. Susun spreadsheet
Buat satu sheet bernama Kirim dengan kolom berikut:
| Kolom | Isi | Contoh |
|---|---|---|
| A: nomor | Format internasional tanpa tanda + dan tanpa spasi | 6281234567890 |
| B: nama | Nama penerima untuk variabel template | Rina |
| C: info | Data yang mau disisipkan | INV-0123 |
| D: status | Diisi skrip | terkirim / gagal |
Format nomor sering jadi sumber masalah. Nomor yang diawali 08 harus diubah menjadi 628. Atur kolom A sebagai teks agar Sheets tidak menghapus angka atau mengubahnya jadi format ilmiah.
2. Buat dan ajukan template pesan
Di WhatsApp Manager, buat template dengan kategori yang sesuai, misalnya utility untuk konfirmasi pesanan atau pengingat tagihan, dan marketing untuk promosi. Contoh isi template berbahasa Indonesia:
Halo {{1}}, pesanan {{2}} sudah kami terima dan sedang diproses. Balas pesan ini bila ada pertanyaan.
{{1}} dan {{2}} adalah variabel yang nanti diisi dari kolom B dan C. Tunggu sampai status template disetujui sebelum lanjut. Pilih kategori dengan jujur, karena kategori memengaruhi biaya dan aturan pengiriman.
3. Simpan token di Script Properties
Buka spreadsheet, pilih Extensions > Apps Script. Jangan menulis token langsung di kode. Buka Project Settings > Script Properties, lalu tambahkan:
WA_TOKEN: access token.WA_PHONE_ID: phone number ID.
4. Tempel skrip pengirim
Ganti isi Code.gs dengan skrip berikut. Sesuaikan nama template dan versi Graph API dengan yang tertera di dasbor Meta milikmu.
function kirimWhatsApp() {
const props = PropertiesService.getScriptProperties();
const token = props.getProperty('WA_TOKEN');
const phoneId = props.getProperty('WA_PHONE_ID');
const url = 'https://graph.facebook.com/v27.0/' + phoneId + '/messages';
const sheet = SpreadsheetApp.getActive().getSheetByName('Kirim');
const data = sheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
const [nomor, nama, info, status] = data[i];
if (!nomor || status === 'terkirim') continue;
const body = {
messaging_product: 'whatsapp',
to: String(nomor),
type: 'template',
template: {
name: 'konfirmasi_pesanan',
language: { code: 'id' },
components: [{
type: 'body',
parameters: [
{ type: 'text', text: String(nama) },
{ type: 'text', text: String(info) }
]
}]
}
};
const res = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + token },
payload: JSON.stringify(body),
muteHttpExceptions: true
});
const ok = res.getResponseCode() === 200;
sheet.getRange(i + 1, 4).setValue(ok ? 'terkirim' : 'gagal: ' + res.getContentText().slice(0, 200));
Utilities.sleep(300);
}
}
Opsi muteHttpExceptions: true membuat skrip tidak berhenti saat satu nomor gagal, sehingga pesan error dari API bisa dicatat di kolom status. Baris yang sudah terkirim dilewati, jadi skrip aman dijalankan ulang.
5. Uji dengan satu nomor
Isi satu baris dengan nomormu sendiri, lalu jalankan fungsi kirimWhatsApp dari editor. Google akan meminta izin akses spreadsheet dan koneksi eksternal. Periksa kolom status: bila gagal, pesan error dari Meta biasanya cukup jelas, misalnya nama template salah, jumlah variabel tidak cocok, atau token kedaluwarsa.
6. Jadwalkan atau picu otomatis
Di menu Triggers (ikon jam), tambahkan pemicu time-driven, misalnya setiap jam atau setiap pagi. Skrip akan memproses baris baru yang statusnya masih kosong. Apps Script punya batas waktu eksekusi per jalan dan kuota harian, jadi untuk daftar yang sangat panjang, proses bertahap per kelompok.
Bagaimana jika ingin tanpa kode?
Alur yang sama bisa dibuat di alat otomasi seperti n8n: node Google Sheets membaca baris, node WhatsApp Business Cloud mengirim template, lalu node Google Sheets lagi memperbarui status. Keuntungannya, kamu mendapat riwayat eksekusi yang rapi dan mudah menambah langkah lain, misalnya mengirim ringkasan ke email. Pengenalan alatnya ada di apa itu n8n.
Ada juga gateway tidak resmi yang meniru WhatsApp Web. Cara ini tidak memerlukan persetujuan template, tetapi tidak didukung Meta dan berisiko nomor diblokir, terutama untuk pengiriman massal. Untuk komunikasi bisnis yang penting, jalur resmi jauh lebih aman.
Contoh penerapan yang sering dipakai adalah pengingat tagihan pelanggan otomatis lewat WhatsApp. Bila ingin melangkah lebih jauh sampai membalas pesan pelanggan secara otomatis, lihat chatbot WhatsApp AI untuk toko online.
Pertanyaan yang sering diajukan
Apakah bisa mengirim pesan bebas tanpa template?
Hanya bila penerima mengirim pesan atau menelepon nomor bisnismu dalam 24 jam terakhir. Untuk pengiriman terjadwal dari spreadsheet, gunakan template yang sudah disetujui.
Apakah WhatsApp Cloud API berbayar?
Meta mengenakan biaya untuk jenis pesan tertentu, dengan tarif yang berbeda per kategori dan negara. Skema dan tarifnya pernah berubah, jadi cek halaman harga resmi WhatsApp Business Platform sebelum menghitung biaya.
Kenapa status menulis gagal padahal nomornya benar?
Penyebab umum: nama atau bahasa template tidak sama persis dengan yang disetujui, jumlah variabel tidak cocok, token kedaluwarsa, atau nomor tujuan tidak memakai WhatsApp. Baca pesan error yang tercatat di kolom status.
Bolehkah memakai daftar nomor hasil membeli database?
Jangan. Selain melanggar kebijakan opt-in WhatsApp, data pribadi yang diperoleh tanpa izin juga berisiko dari sisi UU Pelindungan Data Pribadi. Kirim hanya ke pelanggan yang memberikan nomornya dan setuju dihubungi.
Checklist sebelum mengaktifkan pengiriman otomatis:
- Penerima sudah memberi izin dihubungi lewat WhatsApp.
- Template disetujui dan kategorinya sesuai.
- Token tersimpan di Script Properties, bukan di kode.
- Uji ke nomor sendiri berhasil.
- Kolom status terisi agar tidak ada pesan ganda.


