WhatsApp-Nachrichten aus Google Sheets mit Python senden

4. Juli 2024

Möchten Sie Ihre geschäftliche Kommunikation über WhatsApp effektiver gestalten? Dieses Tutorial zeigt Ihnen, wie Sie Nachrichten an Telefonnummern senden, die in einer Google Sheets CSV-Datei gespeichert sind, mithilfe von Python, der requests-Bibliothek und der Wassenger API. Sie lernen, die CSV-Datei aus Google Sheets herunterzuladen, die Telefonnummern und Nachrichten zu lesen und diese automatisch mit Wassenger zu versenden.

🫣 Keine Lust zu programmieren? Kein Problem! Entdecken Sie unser neues No-Code-Feature für WhatsApp-Kampagnen. Importieren Sie Ihre Kontakte, definieren Sie eine Nachricht, legen Sie ein Lieferdatum fest und lehnen Sie sich zurück! 🥳 🥳

Dieser Artikel ist nur ein kleiner Vorgeschmack auf alle API-Funktionen. Entdecken Sie Dutzende von Anwendungsfällen und sofort einsatzbereiten Codebeispielen hier.

Voraussetzungen

🤩 🤖 Wassenger ist eine vollständige Kommunikationsplattform und API-Lösung für WhatsApp. Entdecken Sie mehr als 100+ API-Anwendungsfälle und automatisieren Sie alles auf WhatsApp indem Sie sich für eine kostenlose Testversion anmelden und in wenigen Minuten starten**!**

Erforderliche Pakete installieren

Erstellen Sie zunächst ein neues Verzeichnis für Ihr Projekt und navigieren Sie im Terminal dorthin. Führen Sie dann die folgenden Befehle aus, um die notwendigen Bibliotheken zu installieren:

pip install requests pandas

Google Sheets CSV-Datei vorbereiten

Erstellen Sie ein neues Google Sheets-Dokument und füllen Sie es mit zwei Spalten:

  • Erste Spalte: Telefonnummer im E164-Format mit Ländervorwahl.
  • Zweite Spalte: Textnachricht, die an die Ziel-Telefonnummer gesendet werden soll.

Das Google Sheets-Dokument sollte mindestens zwei Spalten haben und so aussehen:

Das entsprechende als CSV exportierte Sheets-Dokument sollte so aussehen:

(+447362053576,
  '👋 Welcome to {{your-business-name}}! Thanks for signing up.We are just a message away!' +
    447362053576,
  "💐 Your order has been shipped.Tracking number is {{tracking-number}}.Don't hesitate to reach out to if you need help! 🤗");

Download-URL Ihres Google Sheets-Dokuments abrufen

  1. Klicken Sie oben links auf „Datei“.
  2. Gehen Sie zu „Freigeben“ > „Im Web veröffentlichen“.
  3. Wählen Sie im Reiter „Link“ im Dropdown-Menü „Kommagetrennte Werte (.csv)“ aus.
  4. Wählen Sie die gewünschte Tabellenblattseite mit den relevanten Daten aus (standardmäßig das erste Blatt).
  5. Klicken Sie auf „Veröffentlichen“ und kopieren Sie die URL.

🤩 🤖 Wassenger ist eine vollständige API-Lösung für WhatsApp. Melden Sie sich für eine 7-tägige Gratis-Testversion an und legen Sie in wenigen Minuten los!

Textnachrichten senden

Erstellen Sie eine neue Datei namens send_messages.py in Ihrem Projektverzeichnis und fügen Sie folgenden Code hinzu:

import requests
import pandas as pd
# Replace this with the URL of your published Google Sheets CSV file
# See the indications above to obtain the Google Sheets download URL to enter here
google_sheets_csv_url = 'ENTER_GOOGLE_SHEETS_CSV_URL_HERE'
# Replace this with your Wassenger API token
# Get your API token here: https://app.wassenger.com/apikeys
token = 'API_TOKEN_GOES_HERE'
# Optionally specify the target WhatsApp device ID connected to Wassenger
# you want to use for messages delivery(24 characters hexadecimal value)
device = 'DEVICE_ID'
# Define the headers for the API request
headers = {
'Content-Type': 'application/json', 
'Authorization': f"{token}"
}
# Define the URL for the Wassenger API
api_url = 'https://api.wassenger.com/v1/messages'
# Read the Google Sheets CSV file and parse it as a CSV
data = pd.read_csv(google_sheets_csv_url)
# Iterate through the DataFrame rows
for index, row in data.iterrows():
phone_number = row[0]
message = row[1]
# Create the payload for the API request
payload = {
'phone': phone_number, 
'body': message, 
'device': device
}
# Send the message using the Wassenger API
response = requests.post(api_url, headers=headers, json=payload)
# Check if the API request was successful
if response.status_code == 200:
print(f"Message sent to {phone_number}: {message}")
else:
print(f"Failed to send message to {phone_number}: {response.text}")
print("Finished sending messages")

Führen Sie Code in der Cloud aus, ohne Software auf Ihrem Computer zu installieren. Erstellen Sie ein kostenloses Konto bei Replit und legen Sie in wenigen Minuten los.

Mediennachrichten senden

In diesem Beispiel erstellen wir ein anderes Programm namens send_media.py, um mehrere Bild-Mediennachrichten an verschiedene Telefonnummern zu senden, die aus einem Google Sheets-Dokument geladen werden.

Um eine Mediennachricht zu senden, ist der einfachste Weg, eine Datei-Download-URL anzugeben. Wenn Ihre Datei noch nicht irgendwo hochgeladen ist, können Sie die Datei in Google Drive hochladen und öffentlich zum Download freigeben, damit die API sie abrufen und später senden kann.

Beispiel für eine Download-URL aus einer öffentlichen Datei in Google Drive:

https://drive.google.com/uc?id=1RG3CAPiwiFlFATUlIIwhk0RrbEU4PgVP&export=download

Wichtig: Die angegebene Download-URL muss den Binärinhalt der Datei zurückliefern, sonst schlägt der Vorgang fehl.

Erstellen Sie eine neue Datei namens send_media.py in Ihrem Projektverzeichnis und fügen Sie folgenden Code hinzu:

import requests
import csv
from io import StringIO
# Replace this with the URL of your published Google Sheets CSV file
# See the indications above to obtain the Google Sheets download URL to enter here
google_sheets_csv_url = 'ENTER_GOOGLE_SHEETS_CSV_URL_HERE'
# Set the download URL of the file to be sent.
# The file must be publicly accessible from the Internet and return the file binary content
# You can also upload a local file in Google Drive and make the file publicly available for download
# Accepted file formats are: images(JPEG, WEBP, PNG), video(MP4), audio(MP3, OGG) and documents(PDF, XLSX, DOCX, ZIP...)
file_url = 'https://picsum.photos/seed/picsum/600/500'
# Replace this with your API token
# Get your API token here: YOUR_CONSOLE_URL/apikeys
token = 'API_TOKEN_GOES_HERE'
# Optionally specify the target device ID connected to the API
# you want to use for messages delivery(24 characters hexadecimal value)
device = 'DEVICE_ID'
# Define headers for the API request
headers = {
'Content-Type': 'application/json', 
'Authorization': f'{token}'
}
# Define URLs for the API
base_url = 'https://api.wassenger.com/v1'
url = f'{base_url}/messages'
files_url = f'{base_url}/files'
def upload_file(url):
body = {'url': url}
try:
response = requests.post(files_url, json=body, headers=headers)
response.raise_for_status()
return response.json()['id']
except requests.exceptions.HTTPError as error:
if error.response.status_code == 409 and error.response.json():
return error.response.json()['meta']['file']
print(f'Failed to upload file: {error.response.text}')
return None
def normalize_phone(phone):
return f"+{phone.replace('\\D', '')}"
def send_message(phone, message, file):
body = {
'phone': phone, 
'message': message.strip(), 
'device': device, 
'media': {'file': file}
}
try:
response = requests.post(url, json=body, headers=headers)
response.raise_for_status()
print(f" == > Message created: {phone}")
except requests.exceptions.HTTPError as error:
print(f'Failed to create message to {phone}: {error.response.text}')
def main():
try:
if not file_url:
raise ValueError('Missing required fileUrl')
print('=> Downloading Google Sheets CSV file...')
response = requests.get(google_sheets_csv_url)
response.raise_for_status()
data = response.text
records = csv.reader(StringIO(data))
print('=> Uploading file...')
file_id = upload_file(file_url)
if not file_id:
raise ValueError('Failed to upload file: check the error')
print('=> Processing messages...')
for phone, message in records:
if not phone or not message:
continue
number = normalize_phone(phone)
if number and len(number) >= 8 and message:
send_message(number, message, file_id)
except ValueError as error:
print(f'Error: {error}')
except requests.exceptions.HTTPError as error:
print(f'Error: {error.response.text}')
if __name__ == "__main__":
main()

Führen Sie Code in der Cloud aus, ohne Software auf Ihrem Computer zu installieren. Erstellen Sie ein kostenloses Konto bei Replit und legen Sie in wenigen Minuten los.

Google Sheets-URL für CSV-Export ersetzen

Stellen Sie in den Dateien send_messages.py und send_media.py sicher, dass Sie die Google Sheets CSV-URL und Ihr tatsächliches Wassenger API-Token ersetzt haben:

# Replace this with the URL of your published Google Sheets CSV file
google_sheets_csv_url = 'ENTER_GOOGLE_SHEETS_CSV_URL_HERE'

Siehe die obenstehenden Hinweise, um die Google Sheets-Download-URL zu erhalten und hier einzufügen.

🤩 🤖 Wassenger ist eine vollständige Kommunikationsplattform und API-Lösung für WhatsApp. Entdecken Sie mehr als 100+ API-Anwendungsfälle und automatisieren Sie alles auf WhatsApp indem Sie sich für eine kostenlose Testversion anmelden und in wenigen Minuten starten**!**

API-Token ersetzen

Stellen Sie in der Datei send_messages.py sicher, dass Sie das API-Token Ihres tatsächlichen Wassenger-Kontos definiert haben:

# Replace this with your Wassenger API token
token = 'API_TOKEN_GOES_HERE'

Optional: Wenn Sie mehrere WhatsApp-Nummern in Ihrem Wassenger-Konto verbunden haben, können Sie angeben, welche WhatsApp-Nummer Sie für die Nachrichtenübermittlung verwenden möchten, indem Sie die eindeutige Wassenger-Geräte-ID (24-stellige hexadezimale Zeichenfolge) in der folgenden Zeile angeben:

# Optionally specify the target WhatsApp device ID connected to Wassenger
# you want to use for messages delivery(24 characters hexadecimal value)
device = 'DEVICE_ID'

Programm ausführen

Bevor Sie das Programm ausführen: Wenn Sie planen, Hunderte von Nachrichten hintereinander zu senden, empfehlen wir, eine niedrigere Zustellgeschwindigkeit von nicht mehr als 2–3 Nachrichten pro Minute festzulegen, um Sperrprobleme aufgrund von Anti-Spam-Richtlinien von WhatsApp zu vermeiden. Erfahren Sie hier mehr über Best Practices und wie Sie das Risiko reduzieren können.

Programm in der Cloud ausführen

Sie können das Programm kostenlos in der Cloud auf Replit.com ausführen, ohne Software auf Ihrem Computer zu installieren.

Erstellen Sie einfach ein neues Projekt, kopieren Sie den bereitgestellten Code hinein und klicken Sie auf „Run“, um die Nachrichten zu senden. So einfach ist das 😀

Programm auf Ihrem Computer ausführen

Öffnen Sie ein Terminal in Ihrem Projektverzeichnis und führen Sie den folgenden Befehl aus, um das Skript send_messages.py oder send_media.py auszuführen:

python send_messages.py

Analog können Sie das Skript send_media.py ausführen, um Mediennachrichten zu senden:

python send_media.py

Wenn alles korrekt eingerichtet ist, sollten Sie eine Ausgabe sehen, die anzeigt, dass die Nachrichten erfolgreich erstellt wurden:

=> Message created: +123456789009
=> Message created: +123456789009
=> Message created: +123456789009

Hinweis: Die Nachrichten werden der Versandwarteschlange Ihrer Nummer hinzugefügt und asynchron im Hintergrund basierend auf dem Nachrichtenversand-Limit pro Minute Ihres Abonnements oder der manuell konfigurierten Versandgeschwindigkeit Ihres Kontos zugestellt.

Nachrichten können je nach Anzahl einige Minuten bis Stunden benötigen, bis sie effektiv über WhatsApp an die Zieltelefonnummern zugestellt werden. Sie können den Fortschritt der Nachrichtenlieferung im Web-Panel überwachen oder automatisch durch die Verwendung von Webhook-Ereignissen.

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie Nachrichten an Telefonnummern senden, die in einer Google Sheets CSV-Datei gespeichert sind, mithilfe von Python und der Wassenger API.

Sie können das Google Sheets-Dokument jederzeit aktualisieren und das Programm erneut ausführen, wenn Sie neue Nachrichten über Ihre mit Wassenger verbundene WhatsApp-Nummer senden möchten.

Sie können das Skript weiter anpassen, um zusätzliche Spalten zu verarbeiten, verschiedene Nachrichtentypen zu erstellen oder es bei Bedarf in Ihre Software zu integrieren.

🤩 🤖 Wassenger ist eine vollständige Kommunikationsplattform und API-Lösung für WhatsApp. Entdecken Sie mehr als 100+ API-Anwendungsfälle und automatisieren Sie alles auf WhatsApp indem Sie sich für eine kostenlose Testversion anmelden und in wenigen Minuten starten**!**

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free