Cette méthode utilise un script pour lire les données de votre Google Sheets, effacer les événements existants dans un Google Calendar, puis créer de nouveaux événements à partir des données de la feuille. Le script peut être exécuté manuellement pour mettre à jour l'agenda.
Logique du Script
Accéder aux données : Le script se connectera à votre feuille Google Sheets et lira les données de chaque ligne.
Effacer l'agenda : Il effacera tous les événements existants dans l'agenda cible pour éviter les doublons ou la présence d'événements obsolètes.
Itérer et créer les événements : Il parcourra ensuite chaque ligne de votre feuille, créant un nouvel événement dans un Google Calendar spécifié pour chaque ligne.
Définir les détails de l'événement : Le script utilisera les données de vos colonnes pour définir le titre de l'événement, la date, l'heure de début (en ajoutant 3 heures pour l'heure de fin) et la description.
Formater la description : Il lira les en-têtes et les données correspondantes des autres colonnes (lieu, animateur, etc.) et les formatera clairement dans la description de l'événement.
Étapes pour l'implémentation
Créez un Google Calendar dédié : Il est recommandé de créer un nouvel agenda spécialement pour ces événements. Cela évite que le script ne modifie accidentellement votre agenda personnel.
Ouvrez l'éditeur de script : Dans votre Google Sheets, allez dans Extensions > Apps Script. Cela ouvrira un nouvel onglet avec l'éditeur de script.
Collez le code : Copiez le code ci-dessous et collez-le dans l'éditeur. Vous devrez remplacer les identifiants YOUR_SPREADSHEET_ID
et YOUR_CALENDAR_ID
par les vôtres.
Configurez le script :
YOUR_SPREADSHEET_ID
: Remplacez par l'ID de votre feuille Google Sheets. Vous le trouvez dans l'URL de votre feuille (c'est la longue chaîne de lettres et de chiffres entre /d/
et /edit
).
YOUR_CALENDAR_ID
: Remplacez par l'ID de votre nouvel agenda. Pour le trouver, allez dans les paramètres de votre Google Calendar, sélectionnez l'agenda que vous avez créé, et cherchez l'ID de l'agenda sous Intégrer l'agenda.
Sauvegardez le script : Cliquez sur l'icône de la disquette pour sauvegarder le projet.
Exécutez le script : Cliquez sur le bouton Exécuter (▶️). La première fois que vous l'exécutez, vous devrez donner au script les autorisations nécessaires pour accéder à votre Google Sheets et Google Calendar.
Intégrez l'agenda : Allez sur votre site Google Sites. Insérez un nouvel élément et sélectionnez Intégrer > Agenda. Sélectionnez l'agenda que vous venez de mettre à jour.
3 modifications à faire du script suivant YOUR_CALENDAR_ID et YOUR_SPREADSHEET_ID'
____________________________________________________________
// Fonction pour effacer tous les événements d'un agenda spécifique
function clearCalendar() {
const calendarId = 'YOUR_CALENDAR_ID'; // Remplacez par votre ID de calendrier
const calendar = CalendarApp.getCalendarById(calendarId);
if (!calendar) {
Logger.log('Erreur : l\'ID de calendrier est invalide. Veuillez vérifier l\'ID.');
return;
}
const events = calendar.getEvents(new Date('1970-01-01'), new Date('2100-01-01'));
Logger.log('Suppression de ' + events.length + ' événements...');
for (let i = 0; i < events.length; i++) {
events[i].deleteEvent();
}
}
// Fonction pour créer de nouveaux événements à partir de la feuille Google Sheets
function createEventsFromSheet() {
const spreadsheetId = 'YOUR_SPREADSHEET_ID'; // Remplacez par votre ID de feuille de calcul
const calendarId = 'YOUR_CALENDAR_ID'; // Remplacez par votre ID de calendrier
const sheet = SpreadsheetApp.openById(spreadsheetId).getActiveSheet();
// Efface d'abord l'agenda pour éviter les doublons et les événements obsolètes
clearCalendar();
const dataRange = sheet.getDataRange();
const values = dataRange.getValues();
const headers = values[0];
// Saute la première ligne qui contient les en-têtes
for (let i = 1; i < values.length; i++) {
const row = values[i];
const eventTitle = row[0];
const dateStr = row[1]; // Les dates sont lues comme du texte
const startTimeStr = row[2]; // Les heures sont lues comme du texte
// Vérifie si la ligne contient un titre, une date et une heure de début
if (eventTitle && dateStr && startTimeStr) {
const [day, month, year] = dateStr.split('/').map(Number);
const [hour, minute] = startTimeStr.split(':').map(Number);
const startDate = new Date(year, month - 1, day, hour, minute);
// L'événement dure 3 heures
const endDate = new Date(startDate.getTime() + 3 * 60 * 60 * 1000);
// Crée la chaîne de description détaillée à partir des autres colonnes
let description = '';
for (let j = 3; j < headers.length; j++) {
if (headers[j] && row[j]) {
description += `${headers[j]} : ${row[j]}\n`;
}
}
// Crée l'événement dans l'agenda
try {
CalendarApp.getCalendarById(calendarId).createEvent(eventTitle, startDate, endDate, {
description: description
});
} catch (e) {
Logger.log('Impossible de créer l\'événement : ' + eventTitle + ' Erreur : ' + e.message);
}
} else {
// Si la ligne n'a pas de titre, de date ou d'heure de début, la sauter
Logger.log('Ligne ignorée : ' + row);
}
}
}