Prijavite seZapočnite besplatno probno razdoblje
Meta Tech Provider

Zapisivanje WhatsApp poruka u Google Sheets i slanje iz tablice

Usmjerite odredište webhooka broja na n8n tijek rada čiji Google Sheets čvor dodaje redak za svaku poruku: pošiljatelj, ime, tekst, ID poruke i vrijeme. Za slanje iz tablice Apps Script funkcija može proći kroz retke i pozvati Cloud API preko UrlFetchApp, uz phone number id i token broja. Tim i dalje odgovara iz aplikacije WhatsApp Business.

60 / min

Zahtjeva za pisanje Google Sheets API-ja dopušteno je u minuti po korisniku po projektu; 300 po projektu.

20,000 / day

Apps Script URL Fetch poziva za potrošački Google račun; Workspace računi imaju 100.000.

6 min

Najdulje trajanje jednog izvršavanja Apps Scripta prije nego što se zaustavi.

Kako svaka WhatsApp poruka postaje redak?

Meta šalje svaku poruku s broja na odredište webhooka koje ste postavili, ovdje je to n8n Webhook čvor koji ujedno odgovara na Metin zahtjev za provjeru. Sljedeći čvor je Google Sheets s operacijom Append Row, koji polja iz payloada preslikava u stupce: broj pošiljatelja, ime profila, tekst, ID WhatsApp poruke, vremensku oznaku i phone number id primatelja.

Ako želite da ponovni pokušaji budu bezopasni, umjesto običnog dodavanja koristite Append or Update Row s ključem na ID-ju poruke. Meta ponovno isporučuje poruku kad smatra da isporuka nije uspjela, a ključ na ID-ju drugu isporuku pretvara u ažuriranje istog retka.

Na Coexistence broju odgovori upisani u aplikaciji WhatsApp Business stižu na isti webhook kao događaji smb_message_echoes. Zabilježite ih sa stupcem smjera i tablica će sadržavati obje strane razgovora.

Gdje kvota za Sheets postaje problem?

Kod pisanja po korisniku. Sheets API dopušta 300 zahtjeva za pisanje u minuti po projektu i 60 u minuti po korisniku po projektu, a n8n vjerodajnica jedan je korisnik. Tijek rada koji dodaje jedan redak po poruci stoga može podnijeti otprilike jednu poruku u sekundi, kontinuirano.

Za većinu brojeva trgovina to je dovoljno. Prestaje biti dovoljno nakon masovnog slanja predloška, kad nekoliko stotina kupaca odgovori u roku od nekoliko minuta. API tada odgovara s 429 Too Many Requests i, bez ponovnih pokušaja, reci se gube.

Dva rješenja, svako je dovoljno. Uključite ponovne pokušaje s čekanjem na Google Sheets čvoru, što odgovara Googleovu savjetu o eksponencijalnom povlačenju. Ili grupirajte: neka n8n prikuplja poruke trideset sekundi i doda ih jednim zahtjevom, čime se mnogo pisanja pretvara u jedno.

Kako poslati predloške iz tablice?

Pomoću Apps Scripta, iz izbornika Extensions u tablici. Funkcija čita retke koji još nisu poslani, za svaki poziva messages endpoint Cloud API-ja preko UrlFetchApp te u redak upisuje vraćeni ID poruke i vrijeme. Okidač vođen vremenom može je pokretati svakih nekoliko minuta, a možete je pokrenuti i ručno iz prilagođenog izbornika.

Pristupni token spremite u svojstva skripte, a ne u kôd, kako ga ne bi vidjeli svi koji mogu pregledati skriptu.

Imajte na umu kvote. Potrošački Google račun ima 20.000 URL Fetch poziva dnevno, a Workspace račun 100.000, a svako izvršavanje staje nakon šest minuta. Retke obrađujte u dijelovima i svaki označite kao poslan prije nastavka, kako bi prekinuto izvršavanje nastavilo gdje je stalo, umjesto da pošalje dvaput.

Apps Script: send one approved template per unsent row
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());
  }
}

Uobičajene pogreške

  • Dodavanje bez ključa na ID-ju poruke. Metini ponovni pokušaji tada upisuju istu poruku u dva retka.
  • Pisanje jednog retka po poruci kroz jednu vjerodajnicu tijekom navale odgovora. Ograničenje od 60 upisa u minuti po korisniku vraća 429 i reci se gube.
  • Slanje slobodnog teksta iz tablice osobama koje nisu pisale u zadnja 24 sata. Izvan tog razdoblja isporučuje samo odobreni predložak.
Radite ovo uz EasyCoexistence

Povežite broj na easycoexistence.com, usmjerite njegovo odredište webhooka na n8n tijek rada te kopirajte phone number id i token u skriptu. Od US$ 9 po broju mjesečno, do US$ 1 kako dodajete brojeve, a prva 3 dana su besplatna.

Često postavljana pitanja

Mogu li umjesto n8n-a koristiti Make ili Zapier?

Da. Make custom webhook ili Zapier catch hook prima poruku, a njihov Google Sheets korak dodaje redak.

Kao koji Google račun n8n piše u tablicu?

Kao onaj koji je autorizirao n8n Google vjerodajnicu. Taj račun treba pravo uređivanja tablice, a njegova kvota pisanja po korisniku ona je koju tijek rada troši.

Je li stupac s brojem telefona ispravno formatiran?

Brojeve spremajte kao običan tekst, znamenke s pozivnim brojem države i bez znaka plus, što je oblik koji šalje Meta. Inače Sheets brojeve tretira kao brojčane vrijednosti, što uklanja početni plus i može preoblikovati dugačke vrijednosti.

Čuva li EasyCoexistence kopiju poruka?

Ne. Meta svaki webhook isporučuje na vaš n8n URL, a tablica je jedina kopija.

Nastavite čitati

Spremni za početak?

Postavite WhatsApp Coexistence u nekoliko minuta, a ne mjeseci. Aplikacija i dalje radi na telefonu.

Započnite besplatno probno razdoblje

Provjereno na

WhatsApp i Google Sheets uz Cloud API