Envoyer des messages WhatsApp depuis Google Sheets avec Python

4 juillet 2024

Vous voulez rendre la communication de votre entreprise sur WhatsApp plus efficace ? Ce tutoriel vous montrera comment envoyer des messages vers des numéros de téléphone stockés dans un fichier CSV Google Sheets en utilisant Python, la bibliothèque requests, et l'Wassenger API. Vous apprendrez à télécharger le fichier CSV depuis Google Sheets, à lire les numéros de téléphone et les messages, et à les envoyer automatiquement avec Wassenger.

🫣 Vous ne voulez pas programmer ? Pas de problème ! Découvrez notre nouvelle fonctionnalité de campagnes WhatsApp sans code. Importez vos contacts, définissez un message, choisissez une date de livraison et détendez-vous ! 🥳 🥳

Cet article n'est qu'un petit aperçu de toutes les fonctionnalités de l'API. Explorez des dizaines de cas d'utilisation et des exemples de code prêts à l'emploi ici.

Prérequis

🤩 🤖 Wassenger est une plateforme de communication complète et une solution API pour WhatsApp. Explorez plus de 100 cas d'utilisation de l'API et automatisez n'importe quoi sur WhatsApp en vous inscrivant pour un essai gratuit et démarrer en quelques minutes**!**

Installer les packages requis

Tout d'abord, créez un nouveau répertoire pour votre projet et placez-vous dedans dans votre terminal. Ensuite, exécutez les commandes suivantes pour installer les bibliothèques nécessaires :

pip install requests pandas

Préparer le fichier CSV Google Sheets

Créez un nouveau document Google Sheets et remplissez-le avec deux colonnes :

  • Première colonne : numéro de téléphone au format E.164 avec l'indicatif du pays.
  • Deuxième colonne : message texte à envoyer au numéro cible.

Le document Google Sheets doit contenir au moins deux colonnes et ressembler à :

L'équivalent du document Sheets exporté en CSV devrait ressembler à ceci :

(+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! 🤗");

Obtenir l'URL de téléchargement de votre document Google Sheets

  1. Cliquez sur « Fichier » en haut à gauche.
  2. Allez dans « Partager » > « Publier sur le web ».
  3. Dans l'onglet « Lien », sélectionnez « Valeurs séparées par des virgules (.csv) » dans le menu déroulant.
  4. Sélectionnez la feuille souhaitée contenant les données : par défaut la première.
  5. Cliquez sur « Publier » et copiez l'URL.

🤩 🤖 Wassenger est une solution API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et démarrez en quelques minutes !

Envoyer des messages texte

Créez un nouveau fichier nommé send_messages.py dans le répertoire de votre projet et ajoutez le code suivant :

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")

Exécutez et testez le code dans le cloud sans installer de logiciel sur votre ordinateur. Créez un compte gratuit sur Replit et commencez en quelques minutes.

Envoyer des messages multimédia

Dans cet exemple, nous allons créer un programme différent appelé send_media.py pour envoyer plusieurs messages image à différents numéros chargés depuis un document Google Sheets.

Pour envoyer un message multimédia, le moyen le plus simple est de fournir une URL de téléchargement du fichier. Si votre fichier n'est pas déjà hébergé, vous pouvez le télécharger sur Google Drive et rendre le fichier publiquement téléchargeable par l'API pour l'envoyer ensuite.

Exemple d'URL de téléchargement depuis un fichier public sur Google Drive :

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

Important : l'URL de téléchargement fournie doit renvoyer le contenu binaire du fichier, sinon cela échouera.

Créez un nouveau fichier nommé send_media.py dans le répertoire de votre projet et ajoutez le code suivant :

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()

Exécutez et testez le code dans le cloud sans installer de logiciel sur votre ordinateur. Créez un compte gratuit sur Replit et commencez en quelques minutes.

Remplacer l'URL Google Sheets pour l'export CSV

Dans les fichiers send_messages.py et send_media.py, assurez-vous d'avoir remplacé l'URL CSV Google Sheets et votre jeton API Wassenger réel :

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

Voir les indications ci-dessus pour obtenir l'URL de téléchargement Google Sheets à entrer ici.

🤩 🤖 Wassenger est une plateforme de communication complète et une solution API pour WhatsApp. Explorez plus de 100 cas d'utilisation de l'API et automatisez n'importe quoi sur WhatsApp en vous inscrivant pour un essai gratuit et démarrer en quelques minutes**!**

Remplacer le jeton API

Dans le fichier send_messages.py, assurez-vous d'avoir défini le jeton API de votre compte Wassenger réel :

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

Optionnellement, si vous avez plusieurs numéros WhatsApp connectés à votre compte Wassenger, vous pouvez spécifier quel numéro WhatsApp vous souhaitez utiliser pour l'envoi en indiquant l'ID unique de l'appareil Wassenger (valeur hexadécimale de 24 caractères) dans la ligne suivante :

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

Exécuter le programme

Avant d'exécuter le programme, si vous prévoyez d'envoyer des centaines de messages d'affilée, nous recommandons de définir une vitesse de livraison plus faible, pas plus de 2–3 messages par minute, afin d'éviter des problèmes de suspension liés aux politiques anti-spam de WhatsApp. En savoir plus sur les bonnes pratiques et comment réduire les risques ici.

Exécuter le programme dans le cloud

Vous pouvez exécuter le programme gratuitement dans le cloud sur Replit.com sans installer de logiciel sur votre ordinateur.

Créez simplement un nouveau projet et copiez-collez le code fourni, puis cliquez sur « Run » pour envoyer les messages. C'est aussi simple que ça 😀

Exécuter le programme sur votre ordinateur

Ouvrez un terminal dans le répertoire de votre projet et exécutez la commande suivante pour lancer le script send_messages.py ou send_media.py :

python send_messages.py

De la même façon, vous pouvez exécuter le script send_media.py pour envoyer des messages multimédia :

python send_media.py

Si tout est correctement configuré, vous devriez voir une sortie indiquant que les messages ont été créés avec succès :

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

Remarque : les messages seront ajoutés à la file d'envoi de votre numéro et livrés de manière asynchrone en arrière-plan au fil du temps, en fonction de la limite de vitesse de livraison de messages par minute de votre abonnement ou de la vitesse de livraison que vous avez configurée manuellement dans les paramètres de votre numéro.

Les messages peuvent prendre plusieurs minutes voire plusieurs heures, selon le nombre de messages créés, pour être effectivement délivrés aux numéros cibles via WhatsApp. Vous pouvez suivre la progression de la livraison des messages dans le panneau web ou automatiquement en utilisant les événements webhook.

Conclusion

Dans ce tutoriel, vous avez appris comment envoyer des messages vers des numéros de téléphone stockés dans un fichier CSV Google Sheets en utilisant Python et l'API Wassenger.

Vous pouvez mettre à jour le document Google Sheets et relancer le programme à tout moment pour envoyer de nouveaux messages via votre numéro WhatsApp connecté à Wassenger.

Vous pouvez également personnaliser le script pour gérer des colonnes supplémentaires, créer différents types de messages ou l'intégrer à votre logiciel selon vos besoins.

🤩 🤖 Wassenger est une plateforme de communication complète et une solution API pour WhatsApp. Explorez plus de 100 cas d'utilisation de l'API et automatisez n'importe quoi sur WhatsApp en vous inscrivant pour un essai gratuit et démarrer en quelques minutes**!**

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free