I-log ang mga mensahe sa WhatsApp sa Google Sheets at magpadala mula sa isang sheet
Ituro ang webhook destination ng numero sa isang n8n workflow na ang Google Sheets node ay nag-a-append ng isang row kada mensahe: nagpadala, pangalan, text, message id at oras. Para magpadala mula sa sheet, maaaring i-loop ng isang Apps Script function ang mga row at tawagin ang Cloud API gamit ang UrlFetchApp, kasama ang phone number id at token ng numero. Patuloy na sasagot ang team mula sa WhatsApp Business app.
Bilang ng write request ng Google Sheets API na pinapayagan kada minuto kada user kada project; 300 kada project.
Bilang ng Apps Script URL Fetch call para sa consumer na Google account; 100,000 ang sa mga Workspace account.
Pinakamatagal na maaaring tumakbo ang isang Apps Script execution bago ito ihinto.
Paano nagiging row ang bawat mensahe sa WhatsApp?
Ipino-post ng Meta ang bawat mensahe sa numero sa webhook destination na itinakda ninyo, dito ay isang n8n Webhook node na sumasagot din sa verification request ng Meta. Ang kasunod na node ay Google Sheets na may operasyong Append Row, na nagma-map ng mga field mula sa payload papunta sa mga column: numero ng nagpadala, pangalan sa profile, text, WhatsApp message id, timestamp at ang phone number id na tumanggap.
Gamitin po ang Append or Update Row na naka-key sa message id sa halip na simpleng append kung nais ninyong hindi makasama ang mga retry. Muling ipinapadala ng Meta ang isang mensahe kapag inakala nitong pumalya ang delivery, at gawing update ng parehong row ang pangalawang delivery kapag naka-key sa id.
Sa isang Coexistence number, ang mga sagot na tinype sa WhatsApp Business app ay dumarating sa parehong webhook bilang mga smb_message_echoes event. I-log ang mga ito na may direction column at hawak na ng sheet ang magkabilang panig.
Saan nagiging problema ang quota ng Sheets?
Sa mga write kada user. Pinapayagan ng Sheets API ang 300 write request kada minuto kada project at 60 kada minuto kada user kada project, at isang user ang isang n8n credential. Kaya ang workflow na nag-a-append ng isang row kada mensahe ay kayang humawak ng mga isang mensahe kada segundo, tuloy-tuloy.
Sapat na iyon para sa karamihan ng mga numero ng tindahan. Hindi na ito sapat pagkatapos ng broadcast na template, kapag ilang daang customer ang sumagot sa loob ng ilang minuto. Sasagot na ang API ng 429 Too Many Requests at, kung walang retry, mawawala ang ilang row.
May dalawang solusyon, sapat na ang isa. I-on ang retry na may wait sa Google Sheets node, na tugma sa sariling payo ng Google na mag-back off nang exponential. O mag-batch: ipaipon sa n8n ang mga mensahe sa loob ng tatlumpung segundo at i-append ang mga ito sa isang request, kaya nagiging isa ang maraming write.
Paano magpadala ng mga template mula sa isang sheet?
Gamit ang Apps Script, mula sa Extensions menu ng sheet. Binabasa ng isang function ang mga row na hindi pa naipapadala, tinatawag ang messages endpoint ng Cloud API gamit ang UrlFetchApp para sa bawat isa, at isinusulat sa row ang ibinalik na message id at ang oras. Maaari itong patakbuhin ng time-driven trigger kada ilang minuto, o manu-mano mula sa custom menu.
Iimbak po ang access token sa script properties at hindi sa code, para hindi ito makita ng sinumang may access na tumingin sa script.
Isaisip ang mga quota. 20,000 URL Fetch call kada araw ang makukuha ng consumer na Google account at 100,000 sa Workspace account, at humihinto ang bawat execution pagkatapos ng anim na minuto. Iproseso ang mga row nang paunti-unti at markahang naipadala ang bawat isa bago lumipat sa susunod, para ang tumigil na run ay magpatuloy sa kung saan ito huminto at hindi magpadala nang dalawang beses.
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());
}
}Mga karaniwang pagkakamali
- Pag-a-append nang walang key sa message id. Isusulat ng mga retry ng Meta ang parehong mensahe sa dalawang row.
- Pagsusulat ng isang row kada mensahe gamit ang iisang credential habang dagsa ang mga sagot. Ang limitasyong 60 write kada minuto kada user ay magbabalik ng 429 at mawawala ang mga row.
- Pagpapadala ng free-form text mula sa sheet sa mga taong hindi sumulat sa loob ng 24 oras. Tanging approved na template lang ang naide-deliver sa labas ng window na iyon.
I-connect ang numero sa easycoexistence.com, ituro ang webhook destination nito sa n8n workflow, at kopyahin ang phone number id at token sa script. Mula US$ 9 kada naka-connect na numero kada buwan, bumababa hanggang US$ 1 habang nadaragdagan ang mga numero, at libre ang unang 3 araw.
Mga madalas itanong
Maaari ko bang gamitin ang Make o Zapier sa halip na n8n?
Opo. Tatanggapin ng Make custom webhook o Zapier catch hook ang mensahe, at ang Google Sheets step nila ang magdaragdag ng row.
Aling Google account ang ginagamit ng n8n sa pagsusulat?
Ang account na nag-authorize ng n8n Google credential. Kailangan ng account na iyon ng edit access sa sheet, at ang per-user write quota nito ang nauubos ng workflow.
Tama ba ang format ng phone column?
I-store ang mga numero bilang plain text, mga digit na may country code at walang plus sign, na siyang anyong ipinapadala ng Meta. Kung hindi, ituturing ng Sheets ang mga ito na numero, na nag-aalis ng nasa unahang plus at maaaring mag-reformat ng mahahabang value.
Nagtatabi ba ang EasyCoexistence ng kopya ng mga mensahe?
Hindi. Ipinapadala ng Meta ang bawat webhook sa inyong n8n URL, at ang sheet ang tanging kopya.
Magpatuloy sa pagbabasa
Handa na po ba kayong magsimula?
I-set up ang WhatsApp Coexistence sa loob ng ilang minuto, hindi buwan. Patuloy na gumagana ang app sa telepono.
Magsimula ng Libreng TrialNa-verify noong