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
    Membre confirmé
    [Google Calendar] Fonction ou méthode duration dans l'objet calendar
    bonjour,

    j'ai cherché dans tous les recoins mais je n'ai rien trouvé.
    Ni dans la doc de l'api ni même à l'affichage.
    Google Calendar ne retourne jamais la durée d'un évenement ?
    https://developers.google.com/apps-s...r/calendar-app
    https://developers.google.com/apps-s...calendar-event


    Je cherche à lister les évenements via Google Apps Script, et la documentation de la class ne présente aucune fonction, aucune méthode, aucun membre aucune propriété ou attribut de l'objet qui retourne la durée !
    ça me parait si étrange cette omiusion de la part de google.
    Quelqu'un a-t-il une idée ?

    Peut-être que le choix du nom n'est pas explicite mais j'ai déjà cherché Length, duration , interval, rien de tout cela dans l'objet Event ni calendar

    Comment faire alors, ça veut dire que tout le monde refait sa fonction pour calculer manuellement la durée ?


    merci pour vos idées et bonne journée

  2. #2
    Modérateur

    Bonjour,

    Effectivement je ne vois pas non plus de telle fonction.

    Quand tu crées un événement dans ton calendrier (en passant par l'app mobile ou le site web), tu choisis une date de début et une date de fin, et non pas une date de début et une durée. Ca se voit dans l'API d'ailleurs :


    Les API étant souvent symétriques, on retrouve donc logiquement getStartTime() et getEndTime()

    Pour calculer la durée, il suffit de faire la différence entre les 2 dates.

    Un code comme ça :
    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
    function getDuration(event) {
      var start = event.getStartTime().getTime();
      var end = event.getEndTime().getTime();
      var millis = end - start;
      return millis / 1000; // in seconds
    }
     
    function test() {
      var now = new Date();
      var nextWeek = new Date(now.getTime() + (7 * 24 * 60 * 60 * 1000));
      var events = CalendarApp.getDefaultCalendar().getEvents(now, nextWeek);
     
      Logger.log('Events between ' + now + ' and ' + nextWeek);
      events.forEach(function (event) {
        Logger.log(event.getTitle());
        Logger.log(getDuration(event) + 's');
      });
    }

  3. #3
    Membre confirmé
    merci, c'est ce que j'avais envisagé de faire mais j'espèrais tellement me priver d'avoir à réinventer le moulin pour un besoin si "évident" dans un calendrier. En piochant encore plus loin, je m'apperçois aussi que Google Calendar ne permet pas d'afficher en liste les rendez-vous à la façon "tâches à faire" avec en colonne la durée...., de quand à quand...

    Je sais que c'est une donnée calculée et que par convention informatique, on ne met pas d'attribut calculé dans une classe d'objet, mais quand-même, une fonction standardisé retournant la durée eut été la bienvenue...

    bonne journée

    PS / HS : je me demande si la class de Google Map a une fonction qui retourne la longueur d'un trajet .... est-ce que google y a pensé là-bas...

  4. #4
    Modérateur

    Je sais que c'est une donnée calculée et que par convention informatique, on ne met pas d'attribut calculé dans une classe d'objet, mais quand-même, une fonction standardisé retournant la durée eut été la bienvenue...
    J'ai l'impression qu'il n'y a pas d'objet pour stocker une durée en JavaScript. Une différence entre deux dates donne un nombre de millisecondes http://www.finalclap.com/faq/88-java...ifference-date (*) mais tu ne pas encore en faire grand chose, notamment si tu souhaites afficher une durée. La plus-value d'une fonction d'API pour faire une différence est très faible...

    (*) = En lisant ça, je me rend compte que les getTime() de mon code sont sans doute non nécessaires.

    PS : c'est une bonne question Sans doute parce que la distance d'un trajet n'est pas obligatoirement une différence de coordonnées.

  5. #5
    Membre confirmé
    Citation Envoyé par Bktero Voir le message
    J'ai l'impression qu'il n'y a pas d'objet pour stocker une durée en JavaScript. Une différence entre deux dates donne un nombre de millisecondes http://www.finalclap.com/faq/88-java...ifference-date (*) mais tu ne pas encore en faire grand chose, notamment si tu souhaites afficher une durée. La plus-value d'une fonction d'API pour faire une différence est très faible..
    sauf erreur, la partie calcul/compialtion/interpréteur se trouve côté serveur pour Apps script, non ?
    donc ça économiserait de la charge si 5000000 calculs étaient centralisés par une fonction standart plutôt que 500000 utilisateurs (comme moi) crée sa propre fonction durée.
    Quand j'oublie un ";"/parenthèse c'est le serveur Google qui me le dit après upload de mon code et non pas mon navigateur client qui travaille à faire le boulout d'interprêteur.
    Si je ne me trompe, il n'existe aucun éditeur permettant de faire du gs (google script apps script) offline n'est-ce pas ? Ne serait-ce que tester la syntaxe/interpréteur avant la connexion aux données/objets online.

  6. #6
    Modérateur

    Que Google fasse x fois le calcul dans une fonction à eux ou dans une fonction aux utilisateurs, ça fait x fois le calcul.

    Le seul truc qui existe à ma connaissance c'est https://github.com/google/clasp mais je n'ai jamais testé.

###raw>template_hook.ano_emploi###