Καταγραφή μηνυμάτων WhatsApp στο Google Sheets και αποστολή από φύλλο
Δείξτε το webhook του αριθμού σε ένα workflow του n8n, όπου ο κόμβος Google Sheets προσθέτει μία γραμμή ανά μήνυμα: αποστολέας, όνομα, κείμενο, id μηνύματος και ώρα. Για αποστολή από φύλλο, μια συνάρτηση Apps Script μπορεί να διατρέξει τις γραμμές και να καλέσει το Cloud API με UrlFetchApp, χρησιμοποιώντας το phone number id και το token του αριθμού. Η ομάδα σας συνεχίζει να απαντά από την εφαρμογή WhatsApp Business.
Αιτήματα εγγραφής του Google Sheets API που επιτρέπονται ανά λεπτό, ανά χρήστη και ανά project· 300 ανά project.
Κλήσεις URL Fetch του Apps Script για προσωπικό λογαριασμό Google· οι λογαριασμοί Workspace έχουν 100.000.
Μέγιστος χρόνος εκτέλεσης μίας εκτέλεσης Apps Script πριν διακοπεί.
Πώς γίνεται κάθε μήνυμα WhatsApp μια γραμμή;
Η Meta στέλνει κάθε μήνυμα του αριθμού στο webhook που έχετε ορίσει, εδώ έναν κόμβο Webhook του n8n που απαντά και στο αίτημα επαλήθευσης της Meta. Ο επόμενος κόμβος είναι το Google Sheets με τη λειτουργία Append Row, που αντιστοιχίζει πεδία του payload σε στήλες: τον αριθμό του αποστολέα, το όνομα προφίλ, το κείμενο, το id του μηνύματος WhatsApp, τη χρονική σήμανση και το phone number id παραλήπτη.
Χρησιμοποιήστε Append or Update Row με κλειδί το id του μηνύματος αντί για απλή προσθήκη, αν θέλετε οι επαναλήψεις να είναι ακίνδυνες. Η Meta ξαναστέλνει ένα μήνυμα όταν θεωρεί ότι η παράδοση απέτυχε, και το κλειδί στο id μετατρέπει τη δεύτερη παράδοση σε ενημέρωση της ίδιας γραμμής.
Σε έναν αριθμό Coexistence, οι απαντήσεις που πληκτρολογούνται στην εφαρμογή WhatsApp Business φτάνουν στο ίδιο webhook ως συμβάντα smb_message_echoes. Καταγράψτε τα με μια στήλη κατεύθυνσης και το φύλλο θα περιέχει και τις δύο πλευρές.
Πού «δαγκώνει» το όριο του Sheets;
Στις εγγραφές ανά χρήστη. Το Sheets API επιτρέπει 300 αιτήματα εγγραφής ανά λεπτό ανά project και 60 ανά λεπτό ανά χρήστη ανά project, και ένα credential του n8n είναι ένας χρήστης. Ένα workflow που προσθέτει μία γραμμή ανά μήνυμα αντέχει επομένως περίπου ένα μήνυμα το δευτερόλεπτο, σε διαρκή βάση.
Αυτό αρκεί για τους περισσότερους αριθμούς καταστημάτων. Παύει να αρκεί μετά από ένα broadcast template, όταν μερικές εκατοντάδες πελάτες απαντούν μέσα σε λίγα λεπτά. Τότε το API απαντά 429 Too Many Requests και, χωρίς επαναλήψεις, χάνονται γραμμές.
Υπάρχουν δύο λύσεις, και η καθεμία αρκεί. Ενεργοποιήστε τις επαναλήψεις με αναμονή στον κόμβο Google Sheets, κάτι που συμφωνεί με τη συμβουλή της Google για εκθετική υποχώρηση. Ή ομαδοποιήστε: αφήστε το n8n να συλλέγει μηνύματα για τριάντα δευτερόλεπτα και να τα προσθέτει με ένα αίτημα, ώστε πολλές εγγραφές να γίνουν μία.
Πώς στέλνετε templates από ένα φύλλο;
Με Apps Script, από το μενού Extensions του φύλλου. Μια συνάρτηση διαβάζει τις γραμμές που δεν έχουν σταλεί, καλεί για καθεμία το endpoint messages του Cloud API με UrlFetchApp και γράφει στη γραμμή το id μηνύματος που επέστρεψε και την ώρα. Ένας χρονικός trigger μπορεί να την τρέχει κάθε λίγα λεπτά, ή μπορείτε να την εκτελείτε χειροκίνητα από ένα προσαρμοσμένο μενού.
Αποθηκεύστε το token πρόσβασης στις ιδιότητες του script και όχι μέσα στον κώδικα, ώστε όποιος μπορεί να δει το script να μην το βλέπει.
Λάβετε υπόψη τα όρια. Ένας προσωπικός λογαριασμός Google έχει 20.000 κλήσεις URL Fetch την ημέρα και ένας λογαριασμός Workspace 100.000, ενώ κάθε εκτέλεση διακόπτεται μετά από έξι λεπτά. Επεξεργαστείτε τις γραμμές σε τμήματα και σημειώστε κάθε γραμμή ως απεσταλμένη πριν προχωρήσετε, ώστε μια διακοπείσα εκτέλεση να συνεχίζει από εκεί που σταμάτησε αντί να στέλνει δύο φορές.
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());
}
}Συνηθισμένα λάθη
- Προσθήκη χωρίς κλειδί στο id του μηνύματος. Οι επαναλήψεις της Meta γράφουν τότε το ίδιο μήνυμα σε δύο γραμμές.
- Εγγραφή μίας γραμμής ανά μήνυμα μέσω ενός μόνο credential κατά τη διάρκεια μιας έκρηξης απαντήσεων. Το όριο των 60 εγγραφών το λεπτό ανά χρήστη επιστρέφει 429 και χάνονται γραμμές.
- Αποστολή ελεύθερου κειμένου από το φύλλο σε άτομα που δεν έχουν γράψει τις τελευταίες 24 ώρες. Έξω από αυτό το παράθυρο παραδίδεται μόνο ένα εγκεκριμένο template.
Συνδέστε τον αριθμό στο easycoexistence.com, δείξτε το webhook του στο workflow του n8n και αντιγράψτε το phone number id και το token στο script. Από US$ 9 ανά αριθμό τον μήνα, με πτώση έως τα US$ 1 καθώς προσθέτετε αριθμούς, και τις πρώτες 3 ημέρες δωρεάν.
Συχνές ερωτήσεις
Μπορώ να χρησιμοποιήσω το Make ή το Zapier αντί για το n8n;
Ναι. Ένα custom webhook του Make ή ένα catch hook του Zapier λαμβάνει το μήνυμα και το βήμα Google Sheets που διαθέτουν προσθέτει τη γραμμή.
Με ποιον λογαριασμό Google γράφει το n8n;
Με αυτόν που εξουσιοδότησε το credential Google του n8n. Ο λογαριασμός αυτός χρειάζεται δικαίωμα επεξεργασίας στο φύλλο, και το όριο εγγραφών ανά χρήστη που καταναλώνει το workflow είναι το δικό του.
Είναι σωστά μορφοποιημένη η στήλη του τηλεφώνου;
Αποθηκεύστε τους αριθμούς ως απλό κείμενο, με ψηφία και κωδικό χώρας χωρίς το σύμβολο +, που είναι η μορφή που στέλνει η Meta. Διαφορετικά το Sheets τους αντιμετωπίζει ως αριθμούς, αφαιρεί το αρχικό + και μπορεί να αλλάξει τη μορφή των μεγάλων τιμών.
Κρατά το EasyCoexistence αντίγραφο των μηνυμάτων;
Όχι. Η Meta παραδίδει κάθε webhook στο URL του n8n σας, και το φύλλο είναι το μοναδικό αντίγραφο.
Συνεχίστε την ανάγνωση
Έτοιμοι να ξεκινήσετε;
Ρυθμίστε το WhatsApp Coexistence σε λίγα λεπτά, όχι σε μήνες. Η εφαρμογή συνεχίζει να λειτουργεί στο τηλέφωνο.
Ξεκινήστε δωρεάν δοκιμήΕπαληθεύτηκε στις