Python3 - Importation de Fichiers CSV et CSV.GZ dans une Feuille Google Sheet
Auteur: Cbillet
Date: 12/11/2024
Version: 1.0
Description
Ce script Python3 permet de centraliser et de consolider automatiquement des fichiers de logs au format CSV ou compressés (.gz) dans une feuille Google Sheet. Ce processus inclut la copie, la décompression, la consolidation et le transfert des données vers Google Sheets, facilitant ainsi la gestion et le suivi des logs de manière centralisée.
Pour télécharger le script, suivez ce lien : import_csv_in_sheet.py
Objectif
Ce script :
Copie les fichiers de logs à partir d’un répertoire source vers un répertoire temporaire.
Décompresse les fichiers .gz et consolide les données avec les fichiers CSV.
Exporte toutes les données combinées vers une feuille Google Sheet.
—
Pré-requis
Compte de Service Google :
Créez un compte de service via Google Cloud Console (https://console.developers.google.com).
Téléchargez le fichier de clé JSON et placez-le dans
/home/admin/scripts/.credential_api_key.json
.Le fichier de clé doit avoir un format similaire à celui-ci :
{ "type": "service_account", "project_id": "labo", "private_key_id": "******************************", "private_key": "-----BEGIN PRIVATE KEY-----*****************************************-----END PRIVATE KEY-----\n", "client_email": "email.api@gmail.com", "client_id": "***************", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/**************.iam.gserviceaccount.com", "universe_domain": "googleapis.com" }
Création de l’Environnement Virtuel :
Exécutez les commandes suivantes pour créer et activer l’environnement virtuel dans lequel installer les dépendances nécessaires :
mkdir /home/admin/venv cd /home/admin/venv python3 -m venv venv_csv_google_sheet source venv_csv_google_sheet/bin/activate pip install gspread oauth2client
Pour exécuter le script, activez l’environnement virtuel :
source /home/admin/venv/venv_csv_google_sheet/bin/activate python ./import_csv.py deactivate
Configuration du Cron :
Pour exécuter le script automatiquement tous les jours à 2 heures, ajoutez la ligne suivante à la crontab :
0 2 * * * /home/admin/venv/venv_csv_google_sheet/bin/python /home/admin/scripts/import_csv.py >> /var/log/google_sheet_import.log 2>&1
—
Configuration de l’API Google
Pour permettre au script d’accéder à Google Sheets, suivez les étapes ci-dessous :
Créer un Projet Google Cloud : Connectez-vous à Google Cloud Console (https://console.developers.google.com/) et créez un projet.
Activer l’API Google Sheets et Google Drive :
Allez dans Bibliothèque d’API et recherchez Google Sheets API.
Activez l’API pour votre projet.
Faites de même pour Google Drive API si vous souhaitez permettre la lecture et l’écriture dans vos fichiers Google Drive.
Créer un Compte de Service :
Rendez-vous dans la section Identifiants du projet.
Créez un nouveau Compte de Service et donnez-lui un nom descriptif.
Dans la section Clés, choisissez le format JSON et téléchargez la clé. Placez ce fichier JSON dans
/home/admin/scripts/.credential_api_key.json
.
Partager la Feuille Google avec le Compte de Service :
Ouvrez votre Google Sheet.
Partagez la feuille avec l’adresse e-mail du compte de service (le champ
client_email
dans le fichier JSON).Assurez-vous que le compte de service a les droits d’édition sur la feuille.
—
Détails du Script
Authentification : Le script s’authentifie auprès de l’API Google Sheets via le fichier de clés JSON.
Étapes du Processus :
Étape 1 : Vérification et création du répertoire temporaire
/tmp/logs
pour stocker les logs en traitement.Étape 2 : Copie des fichiers de logs du répertoire source vers le répertoire temporaire.
Étape 3 : Décompression des fichiers .gz et ajout de leurs données dans un fichier temporaire
/tmp/temp_combined_data.csv
.Étape 4 : Ajout des données du fichier CSV courant au fichier temporaire.
Étape 5 : Envoi des données du fichier temporaire dans la feuille Google Sheet.
Étape 6 : Suppression du fichier temporaire après l’envoi.
Étape 7 : Nettoyage du répertoire temporaire après traitement.
—
Variables du Script
Le script utilise les variables de configuration suivantes :
CREDENTIALS_FILE
: Chemin du fichier de clé JSON pour le compte de service. (Ex :/home/admin/scripts/.credential_api_key.json
)SPREADSHEET_ID
: Identifiant unique de la feuille Google Sheet où les données seront importées.LOGS_SOURCE_DIRECTORY
: Répertoire source contenant les fichiers de logs.TMP_LOGS_DIRECTORY
: Répertoire temporaire où les fichiers de logs sont copiés et traités.CURRENT_CSV_FILE
: Fichier CSV du jour à ajouter dans la feuille de calcul.SHEET_NAME
: Nom de l’onglet dans la feuille Google Sheet où les données seront écrites.TEMP_FILE
: Fichier temporaire pour stocker les données consolidées avant l’importation dans Google Sheets.
—
Arborescence des Fichiers de Logs
Les fichiers de logs à traiter doivent être situés dans le répertoire /home/admin/script/logs/ et peuvent inclure les éléments suivants :
/home/admin/script/logs/
|- mon_log.csv
|- mon_log.csv-1.gz
|- mon_log.csv-2.gz
|- mon_log.csv-3.gz
|- mon_log.csv-4.gz
Chaque fichier .gz sera décompressé, et toutes les données seront consolidées avant d’être exportées vers Google Sheets.
—
Note: Assurez-vous que le compte de service Google a bien les permissions d’accès à la feuille Google Sheet. Ajoutez l’adresse client_email
de votre compte de service comme éditeur de la feuille.
—