Google

Cara Kirim Pesan WhatsApp Otomatis dari Google Spreadsheet

6 min read

Punya data di Google Spreadsheet dan ingin langsung kirim notifikasi ke WhatsApp tanpa ribet? Tutorial ini menjelaskan cara mengirim pesan WhatsApp secara otomatis langsung dari Google Spreadsheet menggunakan Google Apps Script dan WhatsApp API — bisa pakai layanan official maupun non-official.


Gambaran Umum

Alurnya sederhana:

Data di Google Spreadsheet → Google Apps Script → WhatsApp API → Pesan terkirim ke HP

Kamu cukup menulis script sekali, lalu setiap kali ada data baru atau tombol diklik, pesan WA otomatis terkirim ke nomor yang ditentukan.


Pilih WhatsApp API

Sebelum mulai, pilih dulu layanan API yang ingin kamu gunakan.

Layanan Tipe Keterangan
Fonnte Non-official Pakai nomor WA sendiri, mudah di-setup
WA-Gateway / WAblas / Watzap Non-official Mirip Fonnte, berbasis pairing
Whapi.cloud Non-official API modern berbasis cloud
WhatsApp Business API (Meta) Official Butuh verifikasi bisnis, untuk skala besar
Twilio for WhatsApp Official (via Meta) Mudah diintegrasikan, ada free tier

Untuk kebutuhan internal atau skala kecil-menengah, layanan non-official (berbasis pairing nomor WA) paling cepat dan mudah diimplementasikan. Untuk bisnis yang butuh volume besar dan kepatuhan penuh, gunakan WhatsApp Business API resmi.


Yang Dibutuhkan

  1. Google Spreadsheet — berisi data yang ingin dikirim (nama, nomor WA, pesan, dll.)
  2. Akun di layanan WhatsApp API — untuk mendapatkan Token/API Key
  3. Google Apps Script — untuk menghubungkan keduanya (gratis, tidak perlu server)

Struktur Spreadsheet

Pastikan spreadsheet kamu punya kolom yang rapi.

No Nama WhatsApp Pesan Status
1 Budi Santoso 6281234567890 Tagihan bulan ini Rp 500.000
2 Sari Dewi 6287654321098 Selamat, pesanan sudah dikirim!

Tips: Nomor WA sebaiknya dalam format internasional tanpa tanda + (contoh: 6281234567890).


Langkah 1: Buka Google Apps Script

  1. Buka Google Spreadsheet kamu
  2. Klik menu Extensions (atau Ekstensi)
  3. Pilih Apps Script
  4. Halaman editor script akan terbuka di tab baru

Langkah 2: Tulis Script Pengiriman

Hapus semua kode yang ada, lalu paste script berikut:

javascript
// =============================================
// KONFIGURASI — sesuaikan bagian ini
// =============================================
const API_URL   = "https://api.layanan-wa-kamu.com/send"; // Endpoint API WA yang kamu pakai
const API_TOKEN = "isi-token-atau-api-key-kamu-di-sini";  // Token dari dashboard layanan

// Nama kolom di spreadsheet (harus sama persis dengan header)
const COL_NAMA      = "Nama";
const COL_NOMOR_WA  = "WhatsApp";
const COL_PESAN     = "Pesan";
const COL_STATUS    = "Status"; // Kolom untuk mencatat hasil pengiriman

// =============================================
// FUNGSI UTAMA
// =============================================
function kirimPesanWA() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data  = sheet.getDataRange().getValues();
  const header = data[0]; // Baris pertama = header

  // Ambil index kolom berdasarkan nama header
  const idxNama   = header.indexOf(COL_NAMA);
  const idxNomor  = header.indexOf(COL_NOMOR_WA);
  const idxPesan  = header.indexOf(COL_PESAN);
  const idxStatus = header.indexOf(COL_STATUS);

  // Loop dari baris ke-2 (index 1) karena baris 0 adalah header
  for (let i = 1; i < data.length; i++) {
    const row    = data[i];
    const nama   = row[idxNama];
    const nomor  = row[idxNomor].toString().trim();
    const pesan  = row[idxPesan];
    const status = row[idxStatus];

    // Skip baris yang sudah terkirim atau kosong
    if (!nomor || status === "Terkirim") continue;

    // Kirim pesan via API
    const hasil = kirimKeAPI(nomor, pesan);

    // Catat status di spreadsheet
    const statusCell = sheet.getRange(i + 1, idxStatus + 1);
    if (hasil) {
      statusCell.setValue("Terkirim");
    } else {
      statusCell.setValue("Gagal");
    }

    // Jeda kecil agar tidak kena rate limit
    Utilities.sleep(500);
  }
}

// =============================================
// FUNGSI KIRIM KE API
// =============================================
function kirimKeAPI(nomor, pesan) {
  const options = {
    method: "post",
    headers: {
      "Authorization": API_TOKEN,
      "Content-Type": "application/x-www-form-urlencoded"
    },
    payload: {
      target: nomor,
      message: pesan
    },
    muteHttpExceptions: true
  };

  try {
    const response = UrlFetchApp.fetch(API_URL, options);
    const result   = JSON.parse(response.getContentText());
    Logger.log("Response untuk " + nomor + ": " + JSON.stringify(result));

    // Cek apakah berhasil (sesuaikan dengan format response API yang kamu pakai)
    return result.status === true || result.status === "success" || response.getResponseCode() === 200;
  } catch (e) {
    Logger.log("Error untuk " + nomor + ": " + e.toString());
    return false;
  }
}

Langkah 3: Sesuaikan dengan API yang Kamu Pakai

Setiap layanan punya format request sedikit berbeda. Berikut contoh penyesuaiannya:

Untuk Fonnte

javascript
const API_URL   = "https://api.fonnte.com/send";
const API_TOKEN = "token-dari-dashboard-fonnte";

// Payload sudah sesuai, tidak perlu ubah

Untuk Twilio

javascript
const API_URL   = "https://api.twilio.com/2010-04-01/Accounts/ACCOUNT_SID/Messages.json";
const API_TOKEN = "Basic " + Utilities.base64Encode("ACCOUNT_SID:AUTH_TOKEN");

// Ubah fungsi kirimKeAPI - Twilio pakai format berbeda
function kirimKeAPI(nomor, pesan) {
  const options = {
    method: "post",
    headers: { "Authorization": API_TOKEN },
    payload: {
      To: "whatsapp:+" + nomor,
      From: "whatsapp:+14155238886", // Nomor sandbox Twilio
      Body: pesan
    },
    muteHttpExceptions: true
  };
  const response = UrlFetchApp.fetch(API_URL, options);
  return response.getResponseCode() === 201;
}

Untuk WhatsApp Business API (Meta)

javascript
const PHONE_NUMBER_ID = "id-nomor-bisnis-kamu";
const API_URL   = `https://graph.facebook.com/v18.0/${PHONE_NUMBER_ID}/messages`;
const API_TOKEN = "Bearer token-akses-meta-kamu";

function kirimKeAPI(nomor, pesan) {
  const payload = {
    messaging_product: "whatsapp",
    to: nomor,
    type: "text",
    text: { body: pesan }
  };
  const options = {
    method: "post",
    headers: {
      "Authorization": API_TOKEN,
      "Content-Type": "application/json"
    },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };
  const response = UrlFetchApp.fetch(API_URL, options);
  const result   = JSON.parse(response.getContentText());
  return result.messages && result.messages[0].id;
}

Langkah 4: Jalankan Script

Cara Manual (Run dari Editor)

  1. Di editor Apps Script, pastikan fungsi yang dipilih adalah kirimPesanWA
  2. Klik tombol ▶ Run
  3. Pertama kali, Google akan minta izin akses — klik Allow
  4. Cek kolom Status di spreadsheet — akan berisi “Terkirim” atau “Gagal”
  5. Cek log eksekusi via menu View → Execution log

Cara Tambah Tombol di Spreadsheet (Lebih Praktis)

  1. Di spreadsheet, klik menu Insert → Drawing
  2. Buat shape atau tuliskan teks tombol (misal “Kirim WA Sekarang”)
  3. Klik Save and Close
  4. Klik kanan gambar tombol → Assign Script → ketik kirimPesanWA
  5. Sekarang kamu bisa klik tombol itu langsung dari spreadsheet!

Langkah 5: (Opsional) Kirim Otomatis dengan Trigger

Kalau ingin pesan terkirim otomatis tanpa harus klik manual (misalnya setiap hari jam 8 pagi):

  1. Di editor Apps Script, klik ikon jam (Triggers) di sidebar kiri
  2. Klik + Add Trigger
  3. Atur konfigurasinya:
    • Function: kirimPesanWA
    • Event source: Time-driven
    • Type: Day timer
    • Time: 8am – 9am
  4. Klik Save

Tips Tambahan

Pesan multi-baris — gunakan \n dalam teks pesan di spreadsheet atau di script:

javascript
const pesan = "Halo " + nama + ",\nTagihan kamu sudah jatuh tempo.\nSegera lakukan pembayaran.";

Kirim ke banyak nomor sekaligus — beberapa API mendukung target ganda dipisah koma:

javascript
target: "6281234567890,6287654321098"

Format bold/italic — ikuti format native WhatsApp:

  • Bold: *teks*
  • Italic: _teks_
  • Strikethrough: ~teks~

Hindari rate limit — jika kirim banyak pesan, tambahkan jeda antar pengiriman:

javascript
Utilities.sleep(1000); // Jeda 1 detik antar pesan

Troubleshooting

Masalah Kemungkinan Penyebab Solusi
Status selalu “Gagal” Token salah Cek dan copy ulang token dari dashboard API
ReferenceError: header not found Nama kolom tidak cocok Pastikan nama kolom di script sama persis dengan header di spreadsheet (perhatikan spasi dan huruf besar/kecil)
Authorization required Belum izinkan akses Run ulang script dan klik Allow
Pesan tidak terkirim tapi status “Terkirim” Logic pengecekan response berbeda Cek log dan sesuaikan kondisi pengecekan result.status
Script timeout Terlalu banyak baris Bagi pengiriman per batch atau tambah jeda

Kesimpulan

Dengan Google Apps Script dan WhatsApp API, kamu bisa kirim pesan WA otomatis langsung dari spreadsheet tanpa perlu server atau coding yang rumit. Pilihlah layanan API yang paling sesuai dengan kebutuhanmu — layanan non-official lebih mudah untuk mulai cepat, sementara WhatsApp Business API resmi cocok untuk kebutuhan bisnis berskala besar.

Script di atas bersifat generik dan bisa disesuaikan dengan hampir semua layanan WhatsApp API yang ada di pasaran. Chat saya melalui tombol di pojok kanan bawah website, untuk konsultasi lebih lanjut.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Related Posts

Chat!
1