Vous cherchez à connecter Matomo à Looker Studio pour analyser vos données de manière plus approfondie ?
Dans cet article, nous allons nous intéresser à la connexion entre Looker Studio et la plateforme d’analyse web open source Matomo. Nous verrons les différentes options de connecteurs disponibles pour relier les deux outils et comment importer ses données Matomo dans Looker Studio à l’aide d’un classeur Google Sheets.
Qu’est-ce que Looker Studio (ex. Google Data Studio) ?
Looker Studio, anciennement connu sous le nom de Google Data Studio, est un outil gratuit en ligne proposé par Google depuis 2016. Il permet de convertir des données en rapports et tableaux de bord personnalisables grâce à son éditeur de rapports qui fonctionne par glisser-déposer.
L’une des principales forces de Looker Studio est sa capacité à analyser des données provenant de différentes sources grâce à des connecteurs. Cela permet aux utilisateurs d’avoir une vue d’ensemble de leurs données et de les analyser de manière plus approfondie.
Les connecteurs Looker Studio pour Matomo
Pour connecter Matomo à Looker Studio et exploiter pleinement la puissance de ce dernier avec les données collectées, il existe des connecteurs.
Je peux citer trois exemples :
- Le Matomo Connector for Looker Studio (officiel) proposé gratuitement par la communauté. Cependant, dans mon cas de figure, cette solution s’est avérée très limitée et a généré de nombreuses erreurs la rendant inexploitable.
- Le Matomo Looker Studio Connector développé par la société searchVIU GmbH, à partir de 24 €/mois.
- Le Matomo connector proposé par Supermetrics, avec un tarif de départ de 39 €/mois.
Ces deux dernières solutions ont l’avantage d’être faciles à prendre en main et à utiliser, mais leur coût est relativement élevé.
Pour ma part, je n’ai pas souhaité investir dans ces solutions et j’ai opté pour une solution plus artisanale que je vous présente ci-dessous…
Importer ses données Matomo dans Looker Studio à l’aide d’un classeur Google Sheets
Vous cherchez une alternative aux connecteurs Matomo pour Looker Studio ? Bonne nouvelle, il est possible d’importer des données de Matomo dans une feuille Google Sheets pour ensuite les exploiter avec Looker Studio.
Il est important de noter que la méthode présentée dans cet article ne fonctionnera pas pour les utilisateurs de Matomo qui utilisent l’extension Matomo pour WordPress. En effet, l’extension officielle ne prend pas en charge l’API de création de rapports HTTP de Matomo et utilise à la place l’API REST de WordPress.
Alors comment cela marche ?
Étape 1 : Récupérer le lien du rapport Matomo à exporter et à importer dans Looker Studio
Pour commencer, rendez-vous sur votre installation Matomo et sélectionnez le rapport que vous souhaitez exporter. Une fois le rapport sélectionné, cliquez sur le bouton « Exporter ».
Dans la fenêtre de dialogue qui s’ouvre, sélectionnez « CSV » comme format d’export et « Tous » pour la limite de rang. Cliquez ensuite sur « Afficher l’URL d’export » et copiez l’URL qui s’affiche.
Note importante : L’URL générée contient un paramètre token_auth qu’il est nécessaire de remplacer par votre propre token. Pour générer ce token, vous pouvez suivre les étapes décrites dans mon guide « Qu’est-ce qu’un token_auth pour Matomo et comment le générer ? ».
Étape 2 : Mettre en place le script d’import des données Matomo dans Google Sheets
Une fois que vous avez récupéré et ajusté l’URL avec votre token_auth, ouvrez un nouveau classeur Google Sheets et cliquez sur « Extensions > Apps Script ».
Dans l’éditeur de scripts, collez le code ci-dessous en remplaçant « EXPORT_URL » par l’URL que vous avez copié à l’étape précédente. Assurez-vous également d’ajouter le paramètre « & convertToUnicode=0 » à la fin de l’URL.
function myFunction() {
var csvUrl = "EXPORT_URL";
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent);
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
Voici à quoi devrait ressembler votre code une fois que vous avez collé et modifié l’URL :
Renommez le projet en haut à gauche de l’éditeur de scripts et cliquez sur l’icône de la disquette pour enregistrer votre projet. Ensuite, cliquez sur le bouton « Exécuter » dans la barre d’outils pour démarrer l’importation de vos données.
Étape 3 : Automatiser l’import
Une fois que votre script est créé et fonctionnel, vous pouvez le configurer pour qu’il s’exécute périodiquement en utilisant un déclencheur.
Pour ce faire, toujours dans « Apps Script », cliquez sur « Déclencheurs » dans le menu latéral.
Cliquez maintenant sur le bouton « Ajouter un déclencheur ». Dans la fenêtre qui apparaît, choisissez « Déclencheur horaire » comme source d’événement et sélectionnez le type de déclencheur temporel que vous souhaitez (dans mon exemple, j’ai choisi mensuel). Validez votre configuration en cliquant sur « Enregistrer ».
Étape 4 : Importer les données du Google Sheets dans Looker Studio
Maintenant que vos données sont dans Google Sheets, il ne vous reste plus qu’à connecter votre classeur à Looker Studio.
Pour ce faire, rendez-vous sur le site de Looker Studio et créez un nouveau rapport vierge. Ensuite, ajoutez une source de données en sélectionnant Google Sheets.
Choisissez le classeur Google Sheets que vous avez créé précédemment et sélectionnez la feuille à utiliser. Validez ensuite votre sélection.
À ce stade, vous devrez autoriser l’accès à votre classeur Google Sheets en validant la demande d’autorisation. Vous pourrez alors exploiter vos données issues de Matomo directement depuis Looker Studio.
Bonus : un script plus complet pour l’import Google Sheets
En bonus, pour terminer cet article, voici un script plus complet que celui proposé dans la documentation de Matomo. Il s’agit du script présenté lors de ma conférence au MatomoCamp 2024.
Pour utiliser ce script remplacez les variables suivantes :
- URL_MATOMO : à remplacer par l’URL de votre installation Matomo
- ID_SITE : à remplacer par l’ID du site
- TOKEN_AUTH : à remplacer par votre token_auth
// Variables globales
var matomoBaseUrl = "https://URL_MATOMO/index.php?module=API&format=CSV&idSite=ID_SITE&period=month&date=";
var token = "TOKEN_AUTH"; // Remplacez ceci par votre token d'authentification Matomo
var currentDate = new Date();
var startYear = currentDate.getFullYear() - 3; // Trois ans en arrière
var endYear = currentDate.getFullYear(); // Année en cours
var startDate = startYear + "-01-01"; // 1er janvier, trois ans en arrière
var endDate = endYear + "-12-31"; // 31 décembre de l'année en cours
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Fonction principale pour exécuter les autres fonctions
function ImportMatomoData() {
MatomoVisitors();
MatomoSales();
}
// Fonction pour récupérer les données des visiteurs
function MatomoVisitors() {
var csvUrl = matomoBaseUrl + startDate + "," + endDate + "&method=API.get&filter_limit=-1&format_metrics=1&expanded=1&translateColumnNames=1&language=fr&token_auth=" + token;
fetchDataAndWriteToSheet(csvUrl, "Visiteurs");
}
// Fonction pour récupérer le chiffre d'affaires e-commerce
function MatomoSales() {
var csvUrl = matomoBaseUrl + startDate + "," + endDate + "&method=Goals.get&idGoal=ecommerceOrder&showAllGoalSpecificMetrics=1&format_metrics=0&filter_limit=-1&expanded=1&translateColumnNames=1&language=fr&segment=referrerType%3D%3Dsearch&token_auth=" + token;
fetchDataAndWriteToSheet(csvUrl, "Ventes");
}
// Fonction pour convertir les points en virgules dans les nombres
function convertDotsToCommas(data) {
return data.map(row =>
row.map(cell => {
if (typeof cell === 'string' && !isNaN(cell.replace('.', '').replace(',', '.'))) {
return cell.replace('.', ',');
}
return cell;
})
);
}
// Modifier la fonction fetchDataAndWriteToSheet pour inclure la conversion
function fetchDataAndWriteToSheet(csvUrl, sheetName) {
var response = UrlFetchApp.fetch(csvUrl);
var csvContent = response.getContentText("UTF-16");
var csvData = Utilities.parseCsv(csvContent);
// Appliquer la conversion ici
var convertedData = convertDotsToCommas(csvData);
var sheet = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);
sheet.clear();
sheet.getRange(1, 1, convertedData.length, convertedData[0].length).setValues(convertedData);
}
Alors, prêt à vous lancer ? N’hésitez pas à me faire part de vos commentaires sur ce guide dans les commentaires.