Calendar iiens.net to Google

Page datant de 2017, iiens.net ne propose plus le calendrier des cours/salles réservées. Le nouveau iiens.net ne fonctionnera pas de la même manière.

Code « machine à écrire »

iiens.net sur Google

Attention, cela ne s'applique qu'aux événements publiques 🙂

Voilà un petit script pour rajouter les éléments iiens.net sur votre google calendar

Le script dans l'état ne met que les éléments de la vie associative (mais il se configure aisément)

Tails 2017/10/09 17:24


TODO

Actuellement il faut lancer brusquement le script manuellement pour avoir une mise à jour. Voir comment l'execution peut se faire automatiquement est à prévoir

Code

updateCal.js
var now   =new Date();
var mycal = CalendarApp.getCalendarById("hlg8igq79s8h34ka583ij2d128@group.calendar.google.com")
 
evtype = ["V"] // ['V', 'DS', 'C', 'TP', 'TD']
year = [0] // [0,1,2,3] // année en cours
 
// type are 'V' 'DS' 'C' 'TP' 'TD' for asso, controle, cours, tp, td   
function addEvents(jsonSearch,evtype){
  for( var i = 0; i < jsonSearch.length; i++){
    var eventsg = jsonSearch[i].eventgroups
    for(var m in eventsg) {
      events = eval("eventsg."+m+".events")
      for(var n in events) {
        event = eval("events."+n)
        if( event.shorttype == evtype ){
          var day = event.begin
          var real_start = event.real_start * 15
          var duration = event.duration * 15
          var title = event.title
          var location = event.location
          var author = event.teacher
          var start = new Date(new Date(day).getTime() + real_start*60000)
          var end   = new Date(start.getTime() +duration*60000);
          mycal.createEvent((""+title+"\n"+location+"\n"+author), start, end)
        }
      }
    }
  }
}
 
 
function strEvent(event){
 return event.getTitle()+event.getStartTime() 
}
 
function removeDuplicateEvent(){
 var ev = []
 var events = mycal.getEvents(new Date("2015-01-01"), new Date("2022-01-01"))
 for( var i in events){
   event = events[i]
   var s = strEvent(event)
   for( var j in ev ){
     if( ev[j] == s ) {
       Logger.log(s)
       try{event.deleteEvent()}
       catch(err){Logger.log(s)}
     }
   }
   ev.push(s)
 }
}
 
 
function updateCal() {
  for ( var i in year ) {
    var y = year[i]
    for( var nweek = 0 ; nweek < 12 ; nweek++ ){
      var url   = "https://www.iiens.net/etudiants/edt.php?year="+y+"&ts="+parseInt((now.getTime()+604800000*nweek)/1000)+"&format=json";
      var jsonData = UrlFetchApp.fetch(url);
      var jsonString = jsonData.getContentText();
      var jsonSearch = JSON.parse(jsonString);
      for (var j in evtype){
        ev = evtype[j]
        addEvents(jsonSearch,ev)
      }
    }
  }
  removeDuplicateEvent()
}