Catat pesan WhatsApp ke Google Sheets dan kirim dari sheet
Arahkan tujuan webhook nomor ke workflow n8n yang node Google Sheets-nya menambahkan satu baris per pesan: pengirim, nama, teks, id pesan, dan waktu. Untuk mengirim dari sheet, fungsi Apps Script dapat memutar baris demi baris dan memanggil Cloud API dengan UrlFetchApp, memakai phone number id dan token nomor tersebut. Tim tetap membalas dari aplikasi WhatsApp Business.
Permintaan tulis Google Sheets API yang diizinkan per menit per pengguna per proyek; 300 per proyek.
Panggilan URL Fetch Apps Script untuk akun Google konsumen; akun Workspace mendapat 100.000.
Waktu terlama satu eksekusi Apps Script boleh berjalan sebelum dihentikan.
Bagaimana setiap pesan WhatsApp menjadi satu baris?
Meta mengirim setiap pesan di nomor tersebut ke tujuan webhook yang Anda atur, di sini node Webhook n8n yang juga menjawab permintaan verifikasi dari Meta. Node berikutnya adalah Google Sheets dengan operasi Append Row, yang memetakan field dari payload ke kolom: nomor pengirim, nama profil, teks, id pesan WhatsApp, stempel waktu, dan phone number id penerima.
Gunakan Append or Update Row dengan kunci id pesan, bukan append biasa, jika Anda ingin percobaan ulang tidak menimbulkan masalah. Meta mengirim ulang pesan saat menganggap pengiriman gagal, dan kunci pada id mengubah pengiriman kedua menjadi pembaruan baris yang sama.
Pada nomor Coexistence, balasan yang diketik di aplikasi WhatsApp Business masuk ke webhook yang sama sebagai event smb_message_echoes. Catat dengan kolom arah, maka sheet menyimpan kedua sisi percakapan.
Di mana kuota Sheets mulai membatasi?
Pada penulisan per pengguna. Sheets API mengizinkan 300 permintaan tulis per menit per proyek dan 60 per menit per pengguna per proyek, dan satu kredensial n8n dihitung sebagai satu pengguna. Workflow yang menambahkan satu baris per pesan karena itu dapat menangani sekitar satu pesan per detik secara terus-menerus.
Itu lebih dari cukup untuk kebanyakan nomor toko. Tidak lagi cukup setelah template broadcast, ketika beberapa ratus pelanggan membalas dalam hitungan menit. API lalu menjawab 429 Too Many Requests dan, tanpa percobaan ulang, baris akan hilang.
Ada dua perbaikan, salah satunya sudah cukup. Aktifkan percobaan ulang dengan jeda pada node Google Sheets, sesuai saran Google sendiri untuk mundur secara eksponensial. Atau gunakan batch: biarkan n8n mengumpulkan pesan selama tiga puluh detik lalu menambahkannya dalam satu permintaan, sehingga banyak penulisan menjadi satu.
Bagaimana cara mengirim template dari sheet?
Dengan Apps Script, dari menu Extensions di sheet. Sebuah fungsi membaca baris yang belum terkirim, memanggil endpoint messages Cloud API dengan UrlFetchApp untuk tiap baris, lalu menulis id pesan yang dikembalikan beserta waktunya ke baris itu. Trigger berbasis waktu dapat menjalankannya setiap beberapa menit, atau Anda bisa menjalankannya manual dari menu kustom.
Simpan token akses di properti script, bukan di dalam kode, agar siapa pun yang dapat melihat script tidak melihat token itu.
Perhatikan kuotanya. Akun Google konsumen mendapat 20.000 panggilan URL Fetch per hari dan akun Workspace 100.000, dan setiap eksekusi berhenti setelah enam menit. Proses baris dalam potongan dan tandai tiap baris sebagai terkirim sebelum lanjut, sehingga eksekusi yang terhenti dilanjutkan dari titik berhenti dan tidak mengirim dua kali.
function sendPending() {
const token = PropertiesService.getScriptProperties().getProperty("WHATSAPP_TOKEN");
const sheet = SpreadsheetApp.getActive().getSheetByName("Send");
const rows = sheet.getDataRange().getValues();
for (let i = 1; i < rows.length; i++) {
const [phone, name, sentAt] = rows[i];
if (sentAt) continue;
const res = UrlFetchApp.fetch("https://graph.facebook.com/v23.0/<PHONE_NUMBER_ID>/messages", {
method: "post",
contentType: "application/json",
headers: { Authorization: "Bearer " + token },
payload: JSON.stringify({
messaging_product: "whatsapp", to: String(phone), type: "template",
template: { name: "order_ready", language: { code: "en" },
components: [{ type: "body", parameters: [{ type: "text", text: name }] }] },
}),
});
sheet.getRange(i + 1, 3).setValue(new Date());
}
}Kesalahan umum
- Menambahkan baris tanpa kunci id pesan. Percobaan ulang dari Meta lalu menulis pesan yang sama ke dua baris.
- Menulis satu baris per pesan lewat satu kredensial saat lonjakan balasan. Batas 60 penulisan per menit per pengguna mengembalikan 429 dan baris hilang.
- Mengirim teks bebas dari sheet ke orang yang belum menulis dalam 24 jam. Hanya template yang disetujui yang terkirim di luar jendela layanan pelanggan itu.
Hubungkan nomor di easycoexistence.com, arahkan tujuan webhook-nya ke workflow n8n, dan salin phone number id serta token ke script. Mulai US$ 9 per nomor per bulan, turun hingga US$ 1 seiring bertambahnya nomor, dengan 3 hari pertama gratis.
Pertanyaan yang sering diajukan
Bisakah saya memakai Make atau Zapier sebagai pengganti n8n?
Bisa. Custom webhook Make atau catch hook Zapier menerima pesan, lalu langkah Google Sheets mereka menambahkan barisnya.
Dengan akun Google mana n8n menulis?
Akun yang mengotorisasi kredensial Google di n8n. Akun itu perlu akses edit ke sheet, dan kuota tulis per penggunanya yang dipakai workflow.
Apakah kolom nomor telepon sudah berformat benar?
Simpan nomor sebagai teks biasa, berupa digit dengan kode negara tanpa tanda plus, sesuai bentuk yang dikirim Meta. Jika tidak, Sheets menganggapnya angka, sehingga tanda plus di depan hilang dan nilai panjang bisa berubah format.
Apakah EasyCoexistence menyimpan salinan pesan?
Tidak. Meta mengirim setiap webhook ke URL n8n Anda, dan sheet adalah satu-satunya salinan.
Lanjut membaca
Siap memulai?
Konfigurasikan WhatsApp Coexistence dalam hitungan menit, bukan bulan. Aplikasi tetap berfungsi di ponsel.
Mulai uji coba gratisDiverifikasi pada