Dans cet article, je vais vous montrer comment surveiller plusieurs URLs en utilisant Apps Script.
Si vous gérez un site Web, il est important de le surveiller périodiquement pour vérifier s'il est toujours opérationnel et s'il fonctionne correctement. Faire cela manuellement peut être fastidieux et vous pourriez oublier de vérifier votre site Web régulièrement.
Il existe de nombreux services de surveillance de sites Web qui vous aideront à automatiser ce processus, mais il est très facile de mettre en œuvre une solution simple de surveillance du temps de fonctionnement d'un site Web en utilisant seulement quelques lignes de code Apps Script. Dans cet article, je vais vous montrer à quel point il est simple de mettre en place cette solution.
Voici la marche à suivre :
- Créer une feuille de calcul via sheets.new,
- Renommer Feuille 1 en Données
- Placer l'entête suivant
- Colonne A > Date
- Colonne B > URL
- Colonne C > Code Statut
- Colonne D > Temps de chargement
- Créer une feuille nommée URL
- indiquer les différentes URLs à tester dans la colonne A (1 URL par ligne)
- Enfin, dans l'éditeur de script de votre feuille de calcul (Extensions > Apps Script depuis le menu, copier le code ci dessous tel quel
function verifierEtatSiteWeb(url) {
const nomFeuille = SpreadsheetApp.getActiveSpreadsheet().getName();
const fuseauHoraire = Session.getScriptTimeZone();
const email = Session.getActiveUser().getEmail();
try {
let debut = new Date();
let reponse = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
let fin = new Date();
let reponseCode = reponse.getResponseCode();
let tempsReponse = fin - debut;
// Enregistrez une log de l'état du site Web dans la feuille de calcul nommée Données
SpreadsheetApp.getActive().getSheetByName("Données").appendRow([debut, url, reponseCode, tempsReponse]);
// Envoyer une notification par e-mail si
if(reponse.getResponseCode() != 200) {
let laDate = Utilities.formatDate(new Date(), fuseauHoraire, "dd/MM/yyyy | HH:mm:ss");
let sujet = "[ACTION REQUISE] Le site Web est peut-être en panne - " + laDate;
let corps = `Le site ${url} est peut être en panne. Code de réponse attendu 200 mais code ${reponseCode} reçu.`;
MailApp.sendEmail(email, sujet,corps);
}
} catch (e) {
// Envoyer une notification par e-mail si le traitement a planté
let laDate = Utilities.formatDate(new Date(), fuseauHoraire, "dd/MM/yyyy | HH:mm:ss");
let sujet = "[ACTION REQUISE] Le traitement a planté - " + laDate;
let corps = `Le traitement (script) ${nomFeuille} est en panne. Erreur: ${e}`;
MailApp.sendEmail(email, sujet,corps);
}
}
function recupURL() {
var feuilleURL = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("URL");
var data = feuilleURL.getDataRange().getValues();
data.forEach(function (row) {
Logger.log(row);
verifierEtatSiteWeb(row[0]);
});
var feuilleURL = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Données");
feuilleURL.sort(1,false);
}
function onOpen() {
SpreadsheetApp.getUi().createMenu("Découvrir Google Workspace")
.addItem("Lancement", "recupURL")
.addToUi();
}
Ce code est composé de trois fonctions :
- verifierEtatSiteWeb qui
- vérifie l'URL passée en paramètre,
- place le résultat (Date, URL, Code Statut, Temps de réponse) dans la feuille Données,
- envoie un email en cas de problème,
- recupURL qui lance la fonction verifierEtatSiteWeb pour chaque URL trouvée en colonne A de la feuille URL
- onOpen pour lancer la fonction recupURL
A ceci, je vous conseille d'ajouter un déclencheur de la fonction recupURL toutes les heures par exemple.
Voici le résultat pour deux URLs
Convaincu par les outils Google Workspace, sachez que vous pouvez profiter d'un test gratuit de 14 jours en cliquant sur le bouton ci dessous.