Remplir un agenda google via un google form pour prise de rdv en ligne

Remplir un agenda google via un google form pour prise de rdv en ligne - Javascript/Node.js - Programmation

Marsh Posté le 12-09-2014 à 00:40:45    

Bonjour,
 
Je souhaiterai lier un agenda google et un formulaire drive pour proposer la prise de rendez-vous ligne à mes clientes.
J'ai don cherché un tutoriel et j'ai trouver celui-ci: http://espacemultimedia.cc-canton- [...] gle-drive/  
 
J'ai suivi toutes les étapes et essayer de cogiter pour l'adapter à mon formulaire. J'ai reussi a l'adapter mais lorsque l'on prend un rendez-vous via le formulaire et que la page (navigateur) de l'agenda est réactualisée, je me retrouve avec des doublons, c'est à dire plusieurs rendez-vous sur la meme ligne, de la meme personne à la meme heure. C'est très moche et ça fait pas très pro.
 
Sachant que je suis une vraie cruche en programmation (bien que cela m'interesse beaucoup) je ne pratique qu'en amateur et souvent je bug (lol). J'aimerai avoir vos lumières pour savoir ce que je dois modifier pour eviter les doublons et les plantages éventuels.
 
Je vous joins le liens vers le formulaire en question: https://docs.google.com/forms/d/1Nv [...] M/viewform  
 
Et le code que j'ai modifier et adapté et que je pense être du javascript:  
 
var EVENT_IMPORTED = "AJOUTE"; // Ajoutera le texte "AJOUTE" dans la colonne U
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 = 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, 21)   // 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[7];        // Colonne H - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre2 = column[8];        // Colonne I - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre3 = column[9];        // Colonne J - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre4 = column[10];        // Colonne K - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre5 = column[11];        // Colonne L - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre6 = column[12];        // Colonne M - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre7 = column[13];        // Colonne N - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre8 = column[14];        // Colonne O - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre9 = column[15];        // Colonne P - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre10 = column[16];        // Colonne Q - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var titre11 = column[18];        // Colonne S - Titre de l'événement dans l'agenda - Titre du rendez-vous
    var DateDebut = column[6];    // Colonne C - date et heure de début de l'événement
    var DateFin = column[19];      // Colonne T - date et heure de fin de l'événement
    var Civilite = column[1];      // Colonne B - Genre du contact
    var Nom = column[2];          // Colonne C - Nom du contact
    var Prenom = column[3];      // Colonne D - Prenom
    var NumTel = column[4];       // Colonne E - Numéro de téléphone
    var Email = column[5];         // Colonne F - Email
    var Message = column[17];        // Colonne R - Motif du rendez-vous
    var description = "Nom du contact : "+ Nom +" "+ titre +" "+ titre2 +" "+ titre3 +" "+ titre4 +" "+ titre5 +" "+ titre6 +" "+ titre7 +" "+ titre8 +" "+ titre9 +" "+ titre10 +" "+ titre11 //concatenation des champs des colonnes E à J destinée à la zone Description de l'agenda
    var eventImported = column[21];// Colonne U - 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 U, l'événement n'est pas ajouté
    var cal = CalendarApp.openByName(calendarName);
           
       
     cal.createEvent(titre, new Date(DateDebut), new Date(DateFin), {description : description}); // Création de l'événement dans l'agenda avec le titre, la date de début, la date de fin et la description complète
   
       
      sheet.getRange(startcolumn + i, 21).setValue(EVENT_IMPORTED); // Nombre de colonne contenant des données
   
      SpreadsheetApp.flush();  
    }
  }
}
 

Merci beaucoup pour votre aide.

Reply

Marsh Posté le 12-09-2014 à 00:40:45   

Reply

Marsh Posté le 12-09-2014 à 18:58:59    

J'ai l'impression que cela marche comme cela : (le E signifie Étape)
 
Client fait sa réservation sur Google-Drive via le formulaire (E1) => Google Drive via le script le pousse dans ton calendrier (E2) => Affichage dans ton calendrier "pro" (E3).
 
Le code que tu as mis concerne l'étape E2 qui est caché au client et "testeur". De plus l'exemple donné est "simple" mais souffre d'un GROS problème : rien n'est fait pour que les données de ton calendrier serve de validation pour le formulaire pour E1. En gros c'est normal que l'on puisse prendre 2 ou 3 fois un RDV à la même heure car tu n'as pas interdit l'heure une fois qu'elle a été réservée : la "logique" de réservation ne va que dans un sens :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed