Reserver Timing dans Google Calendar via Google Sheets

Y compris Google Docs, Slides et toute autre question en lien avec une application Google
Répondre
w
wdsmarketing
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 19 février 2020
Version d'Excel : 2013
Version de Sheets : FR

Message par wdsmarketing » 5 avril 2020, 20:22

Bonjour,

Je suis entrain de buguer sur le script qui permettrait à mes collaborateurs de réserver des meetings dans mon agenda via Google sheets. :bof:

Mon soucis, est que j'aimerais que les meetings soient de 30 minutes.

Voici mon script :
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarID = spreadsheet.getRange('E2').getValue();
  var eventCal = CalendarApp.getCalendarById(calendarID);
  var lr = spreadsheet.getLastRow();
  var count = spreadsheet.getRange("A6:F"+lr+"").getValues();
  
  for (x=0; x<count.length; x++) {
          var shift = count[x];
      
      var summary = shift[0];
      var startTime = shift[1];
      var endTime = shift[2];
      var guests = shift[3];
      var description = shift[4];
      var location = shift[5]; 
  
      var event = {
          'location': location,
          'description': description,
          'guests':guests +',',
          'sendInvites': 'True',
}
      
   }   
  
 eventCal.createEvent(summary, startTime, endTime, event);
}
Comment faire pour que endTime soient automatiquement de 30 minutes svp ?

Merci.
:bof:
Avatar du membre
Exacel
Membre habitué
Membre habitué
Messages : 100
Appréciations reçues : 6
Inscrit le : 20 février 2020
Version d'Excel : 2019 FR
Version de Calc : *
Version de Sheets : EN/FR

Message par Exacel » 6 avril 2020, 00:24

Yo Wds

Dans gSheets, si les heures sont au bon format, on peut faire +/- entre elles.
Par ex : 23:50:00 + 0:30:00 = 0:20:00

Ca ferait donc :
var endTime = shift[1] + 00:30:00 ;

Ca devrait le faire... si Calendar n'a pas une gestion des heures à sa façon.
Bon test
EMX

:btres:
--
Exacel Solutions
Tools expertise for business
Division of Exaltex
w
wdsmarketing
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 19 février 2020
Version d'Excel : 2013
Version de Sheets : FR

Message par wdsmarketing » 6 avril 2020, 08:09

Yo Exacel,

Merci pour ta réponse, mais ça ne fonctionne pas.

Par contre, j'ai tester ceci ... et ça a fonctionné une fois, puis plus du tout.

Quelqu'un pour m'aider à trouver la solution svp ? :bof:
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarID = spreadsheet.getRange('E2').getValue();
  var eventCal = CalendarApp.getCalendarById(calendarID);
  var lr = spreadsheet.getLastRow();
  var count = spreadsheet.getRange("A6:F"+lr+"").getValues(); 
 
  for (x=0; x<count.length; x++) {
          var shift = count[x];
      
      var summary = shift[0];
      var startTime = shift[1];
      var endTime = shift[2];
      var guests = shift[3];
      var description = shift[4];
      var location = shift[5]; 
      
  
      var event = {
          'location': location,
          'description': description,
          'guests':guests +',',
          'sendInvites': 'True',      
      }
     }   
  
  var intLastRow = findLastRow();
  spreadsheet.getRange('C'+intLastRow).setValue(startTime);
  eventCal.createEvent(summary, startTime, endTime, event);
}

function findLastRow(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for(var i = data.length-1 ; i >=0 ; i--){
    if (data[i][0] != null && data[i][0] != ''){
      return i+1 ;
    }
  }
}
:oops:
w
wdsmarketing
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 19 février 2020
Version d'Excel : 2013
Version de Sheets : FR

Message par wdsmarketing » 6 avril 2020, 09:52

Il me fait d'abord une erreur, puis la deuxième fois il l'applique :

Il affiche startTime et en plus il pousse dans mon Google Calendar.

Le deuxième soucis sera d'ajouter 30 minutes à la formule :mrgreen:
Avatar du membre
Exacel
Membre habitué
Membre habitué
Messages : 100
Appréciations reçues : 6
Inscrit le : 20 février 2020
Version d'Excel : 2019 FR
Version de Calc : *
Version de Sheets : EN/FR

Message par Exacel » 7 avril 2020, 12:56

Bjr,
Je crois que nous n'avons pas bien cerné le problème.
Est-il sur la récupération des données du classeur ou sur l'injection dans Calendar ?
Comment sont codées les données des colonnes A à F de la feuille de départ ?
La durée forcée de 30 min se fera forcément en calculant endTime à partir de startTime. Ce n'est pas une difficulté en soi.
La difficulté réside plus dans la création de l'event dans Calendar, qui existe peut-être déjà.
Ce qui expliquerai que ça n'a fonctionné qu'une fois.
Il faudra éviter de re-balayer toute la feuille, mais de ne traiter que les demandes nouvelles.
Peut-être rajouter un flag ou un stamp sur les lignes déjà traitées pour ne plus les considérer lors de la prochaine exécution.
Si j'avais accès à un fichier partagé, ce serait beaucoup plus simple.
Au prochain épisode...
EMX
--
Exacel Solutions
Tools expertise for business
Division of Exaltex
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message