Kirim WhatsApp Otomatis dari Google Sheets via BalesOtomatis.id
π§© Apa yang Akan Kamu Buat?
Kamu akan membuat sistem yang bisa:
Baca data dari Google Sheets
Kirim pesan WhatsApp otomatis lewat BalesOtomatis.id
Tandai status 'SENT' agar tidak terkirim dua kali
Semua ini cukup kamu setup sekali saja, dan akan berjalan otomatis π‘
β
Langkah 1: Buat Google Sheets-nya
Buka Google Sheets: https://sheets.new
Buat kolom seperti ini (baris pertama = header):
Andi
Produk ABC
2 Hari
6281234567890
phone_no
= nomor WhatsApp tujuanstatus
= nanti diisi otomatis kalau sudah terkirim
β
Langkah 2: Buka Google Apps Script
Di menu atas Google Sheets, klik:
Extensions
βApps Script
Ganti nama project jadi misalnya:
WA Sender
Hapus semua isi default
Copy-paste kode di bawah ini:
function sendPersonalMessages() {
// === KONFIGURASI UTAMA ===
const CONFIG = {
sheetName: "Sheet1", // Nama sheet
phoneColumnName: "phone_no", // Kolom nomor HP
messageTemplate: "Halo {{col_1}}, pesanan {{col_2}} Anda akan sampai dalam {{col_3}}. Terima kasih π",
api_key: "YOUR-API-KEY",
number_id: "YOUR-NUMBER-ID",
enable_typing: "1",
method_send: "async", // async / sync
country_code: "62",
minPhoneLength: 10 // validasi dasar nomor HP
};
// ==========================
try {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CONFIG.sheetName);
if (!sheet) throw new Error(`Sheet '${CONFIG.sheetName}' tidak ditemukan`);
const data = sheet.getDataRange().getValues();
if (data.length < 2) throw new Error(`Sheet '${CONFIG.sheetName}' tidak memiliki data`);
const headers = data[0];
const rows = data.slice(1);
const phoneIndex = headers.indexOf(CONFIG.phoneColumnName);
if (phoneIndex === -1) {
throw new Error(`Kolom '${CONFIG.phoneColumnName}' tidak ditemukan di header`);
}
rows.forEach((row, rowIndex) => {
const actualRow = rowIndex + 2; // index baris untuk log (karena mulai dari baris 2 di spreadsheet)
// Lewati baris kosong
if (row.every(cell => cell === "")) {
Logger.log(`Baris ${actualRow} dilewati (kosong)`);
return;
}
const phoneNo = row[phoneIndex];
if (!phoneNo || phoneNo.toString().length < CONFIG.minPhoneLength) {
Logger.log(`Baris ${actualRow} dilewati (nomor HP tidak valid: '${phoneNo}')`);
return;
}
// Bangun data placeholder
const rowData = {};
headers.forEach((col, i) => {
rowData[`{{${col}}}`] = row[i] || "";
});
// Gantikan semua placeholder
let finalMessage = CONFIG.messageTemplate;
Object.entries(rowData).forEach(([placeholder, value]) => {
finalMessage = finalMessage.replaceAll(placeholder, value.toString());
});
// Siapkan payload
const payload = {
api_key: CONFIG.api_key,
number_id: CONFIG.number_id,
enable_typing: CONFIG.enable_typing,
method_send: CONFIG.method_send,
phone_no: phoneNo.toString(),
country_code: CONFIG.country_code,
message: finalMessage
};
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch("https://api.balesotomatis.id/public/v1/send_personal_message", options);
const code = response.getResponseCode();
const result = response.getContentText();
if (code >= 200 && code < 300) {
Logger.log(`β
Baris ${actualRow} sukses kirim ke ${phoneNo}:\n${result}`);
} else {
Logger.log(`β Baris ${actualRow} GAGAL kirim (status ${code}):\n${result}`);
}
} catch (e) {
Logger.log(`β Baris ${actualRow} ERROR saat mengirim: ${e.message}`);
}
});
} catch (globalError) {
Logger.log("π₯ ERROR GLOBAL: " + globalError.message);
}
}
β
Langkah 3: Isi API Key dan Info Lain
Ganti bagian ini di atas script:
api_key: "ISI_API_KEY_KAMU",
number_id: "ISI_NUMBER_ID_KAMU",
Kamu bisa ambil api_key
dan number_id
dari dashboard akun BalesOtomatis.id.
β
Langkah 4: Jalankan Manual Pertama Kali
Klik tombol βΆοΈ (Run) di toolbar
Pilih
sendLatestRowIfNotSent
Authorize akses jika diminta
Lihat tab βLogsβ β
View > Logs
untuk hasil kirim
β
Langkah 5: Otomatisasi Kirim Tiap 5 Menit
Klik ikon β° "Triggers" (atau menu
Triggers
)Klik tombol
+ Add Trigger
Atur:
Function:
sendLatestRowIfNotSent
Event source:
Time-driven
Type:
Every 5 minutes
Sistem sekarang akan jalan sendiri tiap 5 menit! πͺ
π’ HASILNYA:
Kamu cukup tambahkan baris baru di Google Sheets
Sistem otomatis kirim pesan via BalesOtomatis.id
Baris yang sukses akan ditandai
SENT
agar tidak dobel
Last updated