Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : juin 2018
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Script Google pour créer événements dans Google Agenda

    Bonjour,

    J'ai créé un tableau sur Google Sheets afin d'intégrer des évènement dans Google Agenda grâce à un script. Cela me servira pour mes révisions.
    Mon but est de créer plusieurs événements, selon la courbe de l'oubli d'Ebinghaus (rappels à J3, J10, J30 et J60).

    J'ai plus ou moins réussi, mais je suis confrontée à deux problèmes :
    - le script met "AJOUTE" dans chaque case de la colonne, alors que par exemple je n'ai qu'une seule ligne remplie de dates (pour être plus précise, une ligne = un chapitre, or je n'étudie pas tous les chapitres le même jour !)
    - le script ne tient pas compte des événements déjà créés, je me retrouve donc avec des doublets, triplets, etc.

    Le script est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    var EVENT_IMPORTED = "AJOUTE"; // Ajoutera le texte "AJOUTE" dans la colonne G
    var ss = SpreadsheetApp.getActiveSpreadsheet();
     
    function onOpen() {
       var menuEntries = [{name: "Ajouter les événements à l'agenda", functionName: "importCalendar"}];
       ss.addMenu("Agenda", menuEntries); // Pour ajouter une menu Agenda et un sous-menu "ajouter les événements" dans la feuille de calcul. Cela permettra de tester manuellement la liaison entre la feuille de calcul et l'agenda
    }
     
    function importCalendar() {
        var sheet = SpreadsheetApp.getActiveSheet();
        var startcolumn = 1
        var numcolumns = 30
        var dataRange = sheet.getRange(startcolumn, 1, numcolumns, 6)   // Nombre de colonne contenant des données
        var data = dataRange.getValues();
      for (var i = 0; i < data.length; ++i) { 
        var column = data[i];
        var titre = column[1];     // Colonne A - Titre de l'événement dans l'agenda - Titre du rendez-vous
        var DateJ3 = column[2];    // Colonne B - J3
        var DateJ10 = column[3];  // Colonne C - J10
        var DateJ30 = column[4];   // Colonne D -J30
        var DateJ60 = column[5];   // Colonne E - J60
        var eventImported = column[6];// Colonne G - Statut de l'importation - colonne AJOUTE A L'AGENDA 
     
     
        var setupInfo = ss.getSheetByName("agenda"); // Nom de la feuille de calcul contenant la nom de l'agenda
        var calendarName = setupInfo.getRange("A1").getValue(); // Référence de la cellule contenant le nom de l'agenda
     
        if (eventImported  != EVENT_IMPORTED && titre != "") {  // Evite les doublons dans l'agenda, si le texte AJOUTE est présent en G, l'événement n'est pas ajouté
        var cal = CalendarApp.openByName(calendarName);
     
     
         cal.createAllDayEvent(titre, new Date(DateJ3)); // Création de l'événement dans l'agenda avec le titre, la date de début
         cal.createAllDayEvent(titre, new Date(DateJ10));
         cal.createAllDayEvent(titre, new Date(DateJ30));
         cal.createAllDayEvent(titre, new Date(DateJ60));
     
          sheet.getRange(startcolumn + i, 7).setValue(EVENT_IMPORTED); // Nombre de colonne contenant des données
     
          SpreadsheetApp.flush();  
        }
      }
    }

    Merci à ceux qui voudront bien m'aider, après des heures de recherches je désespère !
    Bonne soirée
    Clara

  2. #2
    Membre à l'essai
    Inscrit en
    septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Bonjour Clara,

    je ne suis pas un spécialiste des scripts, je bricole plus qu'autre chose mais à force de recherches et de copier / coller j'ai réussi à faire un fichier et un script qui ajoute dans mon calendrier google les matchs de handball qui passent à la télé.
    Je rempli le tableau et le script me crée les événements dans mon calendrier.

    Mon tableau contient 5 colonnes :
    Libellé du match | date et heure début | date et heure de fin | Couleur | Résultat d'import

    Si tu veux faire des essais et adapter le script je peux te partager une copie de mon fichier google.

    Ca fonctionne très bien depuis que je l'utilise, voici le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    var EVENT_IMPORTED = "AJOUTE"; // Ajoutera le texte "AJOUTE" dans la colonne K
    var ss = SpreadsheetApp.getActiveSpreadsheet();
     
    function onOpen() {
       var menuEntries = [{name: "Ajouter les événements à l'agenda", functionName: "importCalendar"},{name: "Vider calendrier matchs", functionName: "auto_delete_calendar"}];
       ss.addMenu("Agenda", menuEntries); // Pour ajouter une menu Agenda et un sous-menu "ajouter les événements" dans la feuille de calcul. Cela permettra de tester manuellement la liaison entre la feuille de calcul et l'agenda
    }
     
    function importCalendar() {
        var sheet = SpreadsheetApp.getActiveSheet();
        var startcolumn = 2;  // Première colonne de prise en compte des données, soit la colonne B (titre du rendez-vous)
        var numcolumns = 30;  // Nombre de colonne
        var dataRange = sheet.getRange(startcolumn, 1, numcolumns, 11)   // Nombre de colonne contenant des données
        var data = dataRange.getValues();
      for (var i = 0; i < data.length; ++i) { 
        var column = data[i];
        var titre = column[1];        // Colonne B - Titre de l'événement dans l'agenda
     
        var DateDebut = column[2];    // Colonne C - date et heure de début de l'événement
        var DateFin = column[3];      // Colonne D - date et heure de fin de l'événement  
     
        var couleur = column[4];
     
        var eventImported = column[10];// Colonne K - Statut de l'importation - colonne AJOUTE A L'AGENDA
     
     
        var setupInfo = ss.getSheetByName("agenda"); // Nom de la feuille de calcul contenant la nom de l'agenda
        var calendarName = setupInfo.getRange("A1").getValue(); // Référence de la cellule contenant le nom de l'agenda
     
        if (eventImported  != EVENT_IMPORTED && titre != "") {  // Evite les doublons dans l'agenda, si le texte AJOUTE est présent en K, l'événement n'est pas ajouté
        var cal = CalendarApp.openByName(calendarName);
     
     
          /////////////////////////
     
    var calendarId = 'xxxxxxxxx@group.calendar.google.com';
      var start = DateDebut;
      var end = DateFin;
      var event = {
        summary: titre,
        start: {
          dateTime: start.toISOString()
        },
        end: {
          dateTime: end.toISOString()
        },
     
        // Red background. Use Calendar.Colors.get() for the full list.
        colorId: couleur
      };
      event = Calendar.Events.insert(event, calendarId);
      Logger.log('Event ID: ' + event.getId());
     
          /////////////////////////
     
     
          sheet.getRange(startcolumn + i, 11).setValue(EVENT_IMPORTED); // Nombre de colonne contenant des données
     
          SpreadsheetApp.flush();  
        }
      }
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2018
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Bonjour,

    Je suis dans le cas inverse moi,

    J'ai bien réussi a insérer une rendez-vous dans l'agenda Google, mais je souhaiterais savoir comment le supprimer.

    J'ai fais beaucoup de blog mais je n'arrive pas a trouver. Pouvez-vous m'aider ?

    En vous remerciant par avance

  4. #4
    Membre à l'essai
    Inscrit en
    septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    j'avais trouvé le script ci-dessous qui supprime tous les événements situés entre 2 dates, cela peut peu-être vous aider.

    Cordialement

    Jean-François

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    //Ce script efface tous les évènements d'un agenda compris entre les dates initialDateString (à compléter ligne 10) et finalDateString (à compléter ligne 11).
    //Il faut compléter l'identifiant de l'agenda à la ligne 13 (et bien sûr avoir les droit d'écriture dans le calendrier en question)
     
    function auto_delete_calendar() {
     
      // This formats the date as Greenwich Mean Time in the format
      // year-month-dateThour-minute-second.
      var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
     
     
      // Récupération date du jour au format dd/MM/yyyy
      var today = new Date();
      var dd = today.getDate();
      var mm = today.getMonth()+1; //January is 0!
      var yyyy = today.getFullYear();
      if(dd<10){
           dd='0'+dd
      } 
      if(mm<10){
          mm='0'+mm
      } 
      var today = dd+'/'+mm+'/'+yyyy;
     
     
     
      var initialDateString = today; //format "européen" : jour/mois/année
      var finalDateString = "01/01/2150"; //format "européen" : jour/mois/année
      var initialDate = dateToString(initialDateString);
      var finalDate = dateToString(finalDateString);
     
      var Cal = CalendarApp.getCalendarById("ID AGENDA]");
      var evtsList = Cal.getEvents(initialDate,finalDate);  
      for (var i = 0; i < evtsList.length; i++) {  
        evtsList[i].deleteEvent();
        } 
    }
     
    function dateToString(dateString) {
      var dateArray = dateString.split("/");
      var year = dateArray[2];
      var month = dateArray[1];
      var day = dateArray[0];
      var date = new Date(year, month - 1, day);
     
      return date;
    }

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : mai 2019
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Bonjour Spinman,

    je suis intéréssé par votre fichier et votre script..

    pouvez vous me le partager?

    Merci d'avance

  6. #6
    Membre à l'essai
    Inscrit en
    septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    pas de soucis, envoyez-moi votre @ gmail en message privé pour que je vous le partage

    Cordialement

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    janvier 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : janvier 2016
    Messages : 1
    Points : 2
    Points
    2

    Par défaut Demande de fichier

    Bonjour je serais intéressé par votre fichier aussi. Merci d’avance

  8. #8
    Membre à l'essai
    Inscrit en
    septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    même chose, envoyez-moi votre @mail GMAIL pour que je vous partage le fichier.

    Cordialement

  9. #9
    Membre à l'essai
    Inscrit en
    septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 10
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    je vous ai partagé le fichier exemple en lecture, vous devriez pouvoir en faire une copie pour vous.

    Cordialement

    Jean-François

  10. #10
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    13 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2011
    Messages : 13 705
    Points : 33 331
    Points
    33 331

    Par défaut

    Bonjour,
    Citation Envoyé par spinman
    je vous ai partagé le fichier exemple en lecture
    ce n'est pas dans l'esprit du forum que d'échanger les solutions en privé, nous sommes une communauté d'échange, peut être serait-il intéressant que tu développes ici ta solution à ce problème afin d'en faire profiter un maximum de personnes.

    D'avance merci.

Discussions similaires

  1. Script sql pour import données dans un fichier
    Par totojava dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/02/2013, 10h21
  2. Script Tkinter pour créer un cercle et l'effacer à volonté
    Par sancho.poncho dans le forum Tkinter
    Réponses: 4
    Dernier message: 14/05/2012, 14h03
  3. script linux pour créer une table sur Oracle
    Par ledawa dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/08/2008, 11h29
  4. Réponses: 2
    Dernier message: 04/08/2008, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo