Automatiser l’importation des articles WordPress dans Google Sheets
Dans le monde numérique actuel, la gestion efficace du contenu de votre site web est cruciale. Heureusement, la technologie offre des solutions innovantes pour simplifier cette tâche. Notamment, l’intégration entre WordPress et Google Sheets se révèle être un pont digital efficace pour automatiser et optimiser le processus de gestion de contenu.
WordPress, la plateforme de création de sites web la plus utilisée, permet aux utilisateurs de publier et de gérer leur contenu facilement. D’un autre côté, Google Sheets offre une plateforme flexible pour le traitement et l’analyse des données. Ensemble, ils forment un duo puissant pour les webmasters et les rédacteurs de contenu.
Voici comment vous pouvez tirer parti de cette intégration grâce à un script simple en Google Apps Script, qui synchronise automatiquement le contenu de votre site WordPress avec une feuille de calcul Google Sheets. Cela vous permet de garder un œil sur vos publications, catégories, et bien plus, directement depuis Google Sheets.
Commencer l’intégration
Tout d’abord, ouvrez Google Sheets et créez une nouvelle feuille de calcul. Ensuite, accédez à « Extensions > Apps Script » et copiez le script fourni dans l’éditeur. Ce script crée un menu personnalisé dans votre feuille Google Sheets, offrant une option pour importer le contenu de votre site WordPress.
Le coeur du script
Le script commence par créer un nouveau menu dans l’interface utilisateur de Google Sheets, ajoutant ainsi une facilité d’accès à ses fonctionnalités. Lorsque vous sélectionnez l’option ‘Importer WordPress’, une boîte de dialogue s’affiche, vous invitant à entrer l’URL de votre site WordPress. Une fois l’URL fournie, le script extrait et analyse les données de vos articles WordPress, y compris les titres, liens, dates de publication, extraits, et catégories, et les insère dans votre feuille Google Sheets.
De plus, pour garantir que vous n’importe pas seulement les 100 premiers articles mais bien l’ensemble de votre contenu, le script pagine automatiquement les requêtes à l’API WordPress. Cette approche assure que tous vos articles sont récupérés et listés dans Google Sheets.
Le code complet
function onOpen() { var ui = SpreadsheetApp.getUi(); // Crée un nouveau menu ui.createMenu('Importer WordPress') .addItem('Démarrer l'importation', 'demanderURL') .addSeparator() .addItem('À propos', 'afficherInfosDeveloppeur') // Ajout de l'option du menu .addToUi(); } function demanderURL() { var ui = SpreadsheetApp.getUi(); var result = ui.prompt('Entrez l'URL de votre site WordPress (par exemple, https://monsite.com)', ui.ButtonSet.OK_CANCEL); // Vérifie si l'utilisateur a cliqué sur OK if (result.getSelectedButton() == ui.Button.OK) { var urlBrute = result.getResponseText(); // Utilise une expression régulière pour extraire le domaine var correspondanceDomaine = urlBrute.match(/^(?:https?://)?(?:www.)?([^/]+)/i); var domaine = correspondanceDomaine ? correspondanceDomaine[1] : null; // Extrait le domaine ou retourne null si non trouvé if (domaine) { importerArticlesWordPress(domaine); } else { ui.alert('URL invalide. Veuillez entrer une URL valide.'); } } } function importerArticlesWordPres(urlSite) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); feuille.clear(); // Insère l'entête et met en gras feuille.appendRow(["Titre", "Lien", "Date de publication", "Extrait", "Catégories"]); feuille.getRange("A1:E1").setFontWeight("bold"); feuille.setFrozenRows(1); // Fige la première ligne var page = 1; var articlesTotal = []; // Affiche une notification à l'utilisateur que le traitement est en cours ss.toast('Traitement en cours...', 'Analyse du site ' + urlSite, -1); // Le dernier paramètre, -1, signifie que le message reste indéfiniment jusqu'à ce qu'il soit explicitement fermé while (true) { var options = { muteHttpExceptions: true // Permet de ne pas interrompre le script en cas d'erreur HTTP }; var reponse = UrlFetchApp.fetch("https://" + urlSite + "/wp-json/wp/v2/posts?per_page=100&page=" + page, options); var statusCode = reponse.getResponseCode(); if (statusCode === 200) { var json = JSON.parse(reponse.getContentText()); if (json.length > 0) { articlesTotal = articlesTotal.concat(json); page++; } else { // Sortie de la boucle si la réponse est vide break; } } else if (statusCode === 400) { // Sortie de la boucle si le numéro de page est invalide break; } else { Logger.log('Erreur non gérée. Code: ' + statusCode); break; } } var categoriesMap = obtenirCategoriesMap(urlSite); // Obtient la carte des catégories articlesTotal.forEach(function(article) { var titreDecoded = decoderHtml(article.title.rendered); var datePublication = new Date(article.date); var dateFormatted = Utilities.formatDate(datePublication, Session.getScriptTimeZone(), "dd/MM/yyyy"); var extraitDecoded = decoderHtml(article.excerpt.rendered).replace(/<[^>]+>/g, ''); var catNames = article.categories.map(function(catId) { return categoriesMap[catId]; }).join(', '); feuille.appendRow([titreDecoded, article.link, dateFormatted, extraitDecoded, catNames]); }); // Alignement horizontal de toutes les cellules feuille.getRange(1, 1, feuille.getLastRow(), feuille.getLastColumn()).setVerticalAlignment("middle"); // Ferme la notification une fois le traitement terminé ss.toast('Importation terminée.', 'Étape finale', 5); // Le message disparaîtra après 5 secondes } function decoderHtml(html) { return XmlService.parse('<doc>' + html + '</doc>').getRootElement().getText(); } function obtenirCategoriesMap(urlSite) { var reponse = UrlFetchApp.fetch("https://" + urlSite + "/wp-json/wp/v2/categories"); var categories = JSON.parse(reponse.getContentText()); var map = {}; categories.forEach(function(cat) { map[cat.id] = cat.name; }); return map; } function afficherInfosDeveloppeur() { const htmlContent = ` <html> <head> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet"> <style> body { font-family: 'Roboto', sans-serif; margin: 20px; color: #202124; /* Google Workspace text color */ } strong { color: #202124; /* Darker text for emphasis */ } p { line-height: 1.6; } .linkedin-logo { vertical-align: middle; margin-right: 5px; } </style> </head> <body> <p>Développé par Fabrice Faucheux <a href='https://atelier-informatique.com' target="_blank">L'atelier informatique</a></p> <p>Me retrouver sur LinkedIn <a href='https://www.linkedin.com/in/fabricefaucheux' target="_blank"><img class="linkedin-logo" src="https://upload.wikimedia.org/wikipedia/commons/c/ca/LinkedIn_logo_initials.png" alt="LinkedIn" width="20" height="20"/>Fabrice Faucheux</a></p> </body> </html> `; const dialogue = HtmlService.createHtmlOutput(htmlContent) .setWidth(450) .setHeight(120); // Ajustez la hauteur si nécessaire SpreadsheetApp.getUi().showModalDialog(dialogue, 'À propos'); }
Intégration et utilisation
Après avoir intégré le script dans l’éditeur de scripts de Google Sheets et sauvegardé vos modifications, un nouveau menu intitulé « Importer WordPress » apparaîtra dans votre feuille de calcul. En sélectionnant Démarrer l'importation
et en saisissant l’URL de votre site WordPress, le script débutera le processus d’importation, peuplant votre feuille de calcul avec les derniers articles de votre site.
Personnalisation et flexibilité
Après l’exécution, le script organise les données importées et applique une mise en forme de base, comme le gras pour les en-têtes et l’alignement des cellules, rendant votre feuille de calcul non seulement informative mais également esthétiquement agréable.
L’intégration de WordPress avec Google Sheets via Google Apps Script offre une solution élégante et puissante pour améliorer la gestion de contenu de votre site. Ce guide pratique fournit les étapes et le code nécessaires pour mettre en place cette synchronisation, rendant la gestion de contenu plus efficace et accessible. En exploitant la flexibilité de Google Sheets et la puissance de WordPress, vous pouvez désormais gérer le contenu de votre site web plus facilement que jamais.
Soutenez mon travail
Si cet article vous a été utile et que vous souhaitez soutenir mon travail, vous pouvez me remercier en faisant un don via PayPal. Chaque contribution est grandement appréciée et m’aide à continuer à partager des astuces et conseils sur ce blog. Merci pour votre soutien !
L’Atelier Informatique vous accompagne dans vos projets technologiques en vous proposant des tutoriels et des solutions pour optimiser vos tâches quotidiennes