Identifier les tendances d’un marché est un enjeu majeur pour la plupart des acteurs dans le monde du commerce. Aujourd’hui, l’un des outils les plus efficaces reste Google Trends. Trop souvent sous-estimé, cet outil est pourtant particulièrement riche en information. Le problème ? Comment rendre scalable la récupération et l’analyse des données issues de Google Trends ?

Nous avions vu précédemment comment exploiter récupérer les données Google Trends avec R. Voyons désormais comment nous pouvons aller plus loin avec Python.

En utilisant les codes de cet article, vous serez en mesure de :

  • Récupérer les données Google trend avec python
  • Créer automatiquement un google spreadsheet avec python
  • Afficher la donnée dans Google data studio
  • Créer un Cron pour exécuter le script tous les jours à la même heure

Passons aux choses sérieuses …

Tout d’abord, vous devez installer la bibliothèque:

pip install pytrends

Installons les librairies nécessaires pour la suite

import pytrends
from pytrends.request import TrendReq
import pandas as pd
import time
import datetime
from datetime import datetime, date, time
import pandas as pd
from pandas import DataFrame
#https://searchengineland.com/learn-how-to-chart-and-track-google-trends-in-data-studio-using-python-329119
pytrend = TrendReq()

Je récupère les “related queries” qui sont en mode “rising”

Dans l’exemple ci-dessous nous allons récupérer les mots clés relatif à “Jardin”, “Tondeuse” et “Decoration” pour la France sur les 3 derniers mois.

NB : Il est possible de sélectionner une catégorie spécifique pour sa requête. Ici dans l’exemple, j’ai renseigné “cat=11” car il s’agit de la catégorie “Home Garden”

Afin de voir toutes les fonctionnalités et les filtres, vous devriez vérifier ce référentiel sur Github et vous pouvez également trouver tous les codes de catégorie ici .

pytrend.build_payload(kw_list=['jardin','tondeuse','decoration'], geo = 'FR', timeframe = 'today 3-m', cat = 11)
related_queries= pytrend.related_queries()
jardin =related_queries.get('jardin').get('rising')
tondeuse =related_queries.get('tondeuse').get('rising')
decoration =related_queries.get('decoration').get('rising')

On récupère ici une bibliothèque avec les “tops” requêtes mais ici ce sont les “rising” requêtes qui nous intéressent

Les données sont là, plutôt cool non ? Bon par contre ce n’est pas encore terminé. Ajoutons maintenant une colonne avec la thématique associée à chaque query. Il ne reste plus qu’à concaténer les résultats :

maison['theme'] = 'maison' 
jardin['theme'] = 'jardin' 
bricolage['theme'] = 'bricolage' 
decoration['theme'] = 'decoration' 
result = pd.concat([maison,jardin,bricolage,decoration], axis=0)
Pour chaque query je sais à quelle thématique elle est associée

Comment envoyer la donnée directement dans un Googlesheet ?

Si vous souhaitez simplement exporter la donnée dans un fichier excel, vous pouvez vous arrêter là. La suite vise à envoyer automatiquement la donnée dans un Google sheet pour ensuite alimenter une Google Data Studio. C’est parti ! Mais avant toute chose, voici le pré-requis avant de lancer la suite du code :

Activer l’API Google Sheet et récupérer votre ID client et votre code secret client. Pour cela, suivez les étapes suivantes :

  1. Rendez-vous ici
  2. Créer un projet si vous n’en n’avez pas un sur Google cloud platform
  3. Cliquez sur « Bibliothèque » dans le menu
  4. Recherchez « Google sheet API » et cliquez sur le logo
  5. Cliquez sur « Activez »
  6. Cliquez sur « Identifiants » dans le menu
  7. Cliquez sur « créer des identifiants » (en haut de l’écran) et sur « ID client OAuth »
  8. Choisissez « Autre », renseigner un nom puis cliquez sur « Créer »
  9. Insérez votre code client et ID client dans le code ci-dessous

Créer un Google sheet et récupérer l’ID de ce dernier

  1. Créer un Google sheet
  2. Cliquez sur “partager” en haut à droite
  3. Copier le lien de partage
  4. Récupérer dans l’url, l’ID de votre Google Sheet (exemple :”1l7UEMs2Qv-YE96jAxYkvg9KAumYq3dYk0nlmG62g_-4″ )
  5. Insérer cet ID dans le code ci-dessous à la place de “my_google-sheet-id”

Télécharger le fichier Json

  1. Dans votre espace Google Cloud Platform, cliquez sur “identifiants”
  2. Téléchargez le fichier Json
  3. Déplacez le fichier Json dans le dossier où se trouve le script

Voici le code pour se connecter à votre Google sheet

Avant de lancer le code, vérifier que vous avez remplacer :

  • my_google-sheet-id >> l’ID de votre Google sheet
  • nom_du_fichier_json >> Le nom du fichier Json que vous avez téléchargé précédemment
import gspread as gc
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow,Flow
from google.auth.transport.requests import Request
import os
import pickle

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
# here enter the id of your google sheet
SAMPLE_SPREADSHEET_ID_input = 'my_google-sheet-id'
SAMPLE_RANGE_NAME = 'A1:AA1000'
def main():
    global values_input, service
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file('nom_du_fichier_json', SCOPES) # here enter the name of your downloaded JSON file
            creds = flow.run_local_server(port=0)
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('sheets', 'v4', credentials=creds)

    # Call the Sheets API
    sheet = service.spreadsheets()
    result_input = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID_input,
                                range=SAMPLE_RANGE_NAME).execute()
    values_input = result_input.get('values', [])

    if not values_input and not values_expansion:
        print('No data found.')

main()

df=pd.DataFrame(values_input[1:], columns=values_input[0])
#change this by your sheet ID
SAMPLE_SPREADSHEET_ID_input = 'my_google-sheet-id'

#change the range if needed
SAMPLE_RANGE_NAME = 'A1:AA1000'

def Create_Service(client_secret_file, api_service_name, api_version, *scopes):
    global service
    SCOPES = [scope for scope in scopes[0]]
    #print(SCOPES)
    
    cred = None

    if os.path.exists('token_write.pickle'):
        with open('token_write.pickle', 'rb') as token:
            cred = pickle.load(token)

    if not cred or not cred.valid:
        if cred and cred.expired and cred.refresh_token:
            cred.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file('nom_du_fichier_json', SCOPES)
            cred = flow.run_local_server()

        with open('token_write.pickle', 'wb') as token:
            pickle.dump(cred, token)

    try:
        service = build(api_service_name, api_version, credentials=cred)
        print(api_service_name, 'service created successfully')
        #return service
    except Exception as e:
        print(e)
        #return None
        
# change 'my_json_file.json' by your downloaded JSON file.
Create_Service('nom_du_fichier_json', 'sheets', 'v4',['https://www.googleapis.com/auth/spreadsheets'])
    
def Export_Data_To_Sheets():
    response_date = service.spreadsheets().values().update(
        spreadsheetId="my_google-sheet-id",
        valueInputOption='RAW',
        range=SAMPLE_RANGE_NAME,
        body=dict(
            majorDimension='ROWS',
            values=result.T.reset_index().T.values.tolist())
    ).execute()
    print('Sheet successfully Updated')

Export_Data_To_Sheets()
Et voilà les données sont directement envoyées dans Google Sheet ! 😎

Il ne vous reste plus qu’à créer un Google Data studio

Voici les étapes :

  1. Connectez-vous à Data studio
  2. Créer un nouveau rapport vierge
  3. Cliquez “ajouter des données”
  4. Sélectionnez “Google sheets”
  5. Cherchez et ajoutez le fichier que vous avez créé et alimenté automatiquement avec python
  6. Cliquez sur Ajouter un graphique puis un tableau
  7. Configurer votre tableau comme ceci :