"Bienvenue sur Ekta.Ornicar.com"

// Fonction pour supprimer les accents d'une chaîne de caractères
function removeAccents(str) {
if (typeof str !== 'string') return ''; // Vérifier que str est une chaîne de caractères
return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
}
// Cette fonction liste les événements
function listEvents2() {
// Obtenir la date et l'heure actuelle
var now = new Date();
// Déterminer la date de demain à la même heure
var tomorrow = new Date(now.getTime() + (24 * 60 * 60 * 1000));
// Déterminer le début de la journée actuelle à 00:00:01
var startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 1);
// Déterminer la fin de la journée actuelle à 23:59:59
var endOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);
// Déterminer le début de demain à 00:00:01
var startOfTomorrow = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 0, 0, 1);
// Déterminer la fin de demain à 23:59:59
var endOfTomorrow = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 23, 59, 59);
// Initialiser des tableaux pour stocker les événements d'aujourd'hui et de demain
var eventsToday = [];
var eventsTomorrow = [];
// Obtenir tous les calendriers disponibles
var allCalendars = CalendarApp.getAllCalendars();
// Récupérer les événements pour aujourd'hui et demain à partir de tous les calendriers
for (var i = 0; i < allCalendars.length; i++) {
var calendarEventsToday = allCalendars[i].getEvents(startOfToday, endOfToday);
eventsToday = eventsToday.concat(calendarEventsToday);
var calendarEventsTomorrow = allCalendars[i].getEvents(startOfTomorrow, endOfTomorrow);
eventsTomorrow = eventsTomorrow.concat(calendarEventsTomorrow);
}
// Initialiser un tableau pour stocker les données finales
var data2 = [];
// Déterminer si les événements d'aujourd'hui doivent être affichés
var displayTodayEvents = (now.getHours() >= 0 && now.getHours() <= 11) || (now.getHours() === 12 && now.getMinutes() <= 0);
// Filtrer les événements à afficher en fonction de la variable displayTodayEvents
var eventsToDisplay = displayTodayEvents ? eventsToday : eventsTomorrow;
// Filtrer les événements contenant le mot "Anniversaire" et les mettre en premier
var filteredEvents = eventsToDisplay.filter(function(event) {
return removeAccents(event.getTitle()).includes(" - Anniversaire");
});
// Filtrer les autres événements
var otherEvents = eventsToDisplay.filter(function(event) {
return !removeAccents(event.getTitle()).includes(" - Anniversaire");
});
// Mapper les événements et les formater
data2 = filteredEvents.concat(otherEvents).map(function(event) {
var startTime = Utilities.formatDate(event.getStartTime(), Session.getScriptTimeZone(), "HH:mm");
var title = removeAccents(event.getTitle()); // Supprimer les accents du titre
// Remplacer "- Anniversaire" par "///Anniversaire" dans le titre
title = title.replace(" - Anniversaire", "///Anniversaire");
// Ajouter "\n------------" si l'événement commence à 00:00 et ne contient pas "Anniversaire"
if (startTime === '00:00' && !title.includes("Anniversaire")) {
title += '\n------------'; 
// Retirer la mention "- Anniversaire" si l'événement commence à 00:00 et contient "Anniversaire"
} else if (startTime === '00:00' && title.includes("Anniversaire")) {
title = title.replace("Anniversaire", "-- Anniversaire --");
} else {
title = startTime + '\n' + title; // Ajouter l'heure de début avant le titre
}
return title;
});
// Formater les données en une seule chaîne de caractères
var output = data2.join('\n');
// Si des événements sont trouvés, formater la sortie, sinon, renvoyer un message indiquant qu'il n'y a pas de rendez-vous
if (output) {
// Remplacer les retours à la ligne restants par '///', sauf pour les événements commençant à 00:00
output = output.replaceAll('\n', '///');
// Supprimer " ///------------" de la fin du titre
output = output.replace(" ///------------", "");
return output;
} else {
return '///Pas de Rdv///Relax';
}
}
// Fonction pour gérer les requêtes HTTP GET
function doGet(e) {
var result = listEvents2();
return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.TEXT);
}