Bots de conversa de Telegram amb Google Apps Script

Bots de conversa Exemples Dades pràctiques   Recursos CITCEA
Google Apps Script Projectes Interacció   Inici

Gestionar calendaris

Google Calendar ens permet tenir un calendari (o més) amb les nostres cites. Aquestes poden ser consultades, mitjançant un script. També podem fer servir un calendari per indicar a quines hores s'ha de fer una determinada acció. Anem a veure un exemple de com podem fer un script que llegeixi les cites que hi ha en el calendari per a la data d'avui.

Començarem per entrar a la pàgina de Google Calendar. Si el navegador es recorda del nostre usuari ja podrem veure els calendaris associats al nostre compte. En cas contrari, ens haurem d'identificar. Per fer proves ens ha semblat més adequat fer servir un calendari específic, així podem crear i esborrar esdeveniments al nostre gust. També podríem fer servir un calendari ja existent.

En la part superior de la pàgina de Google Calendar busquem un botó en forma d'engranatge i, en el desplegable, triem l'opció Configuració.

Configuració

Despleguem l'opció Afegeix un calendari i piquem a Crea un calendari.

Crea un calendari

Li posem un nom i creem el calendari. Un cop creat el calendari, aquest ens apareixerà al menú de l'esquerra. Despleguem les opcions per al nostre calendari i triem l'opció Integra el calendari.

Integra el calendari

Ens mostrarà, a la dreta, una pàgina amb diverses opcions i hem de trobar la casella Identificador de calendari on trobarem un codi similar a ^^p0fv05mt9ia5lntfpuj32mmc@group.calendar.google.com que és l'identificador del nostre calendari. Un cop tenim això, ja podem començar a crear el nostre script.

Primerament haurem d'obrir el calendari amb el que volem treballar. Si ho creiem convenient, podem comprovar que el calendari existeix i tenim permís per accedir-hi.

  var idCal = "^^p0fv05mt9ia5lntfpuj32mmc@group.calendar.google.com";
  var cal = CalendarApp.getCalendarById(idCal);
  if (!cal) {  // Si el calendari no existeix o no tenim permís
    resultat = "Calendari no trobat!";
    return ContentService.createTextOutput(resultat);
  }

Llegir esdeveniments del calendari

Per llegir els esdeveniments del calendari cal especificar entre quines dates o hores volem consultar. Agafem, per exemple, els esdeveniments que hi ha des de l'instant en el que s'executa l'script fins al final del dia.

  var ara = new Date();  // La data i l'hora del moment d'executar l'script
  var final = new Date();
  final.setHours(23);  // Li canviem l'hora a les 23.59
  final.setMinutes(59);
  // Agafem tots els esdeveniments des d'ara (inclosos els ja iniciats) fins les 23.59 h
  var esdev = cal.getEvents(ara, final);

Podem consultar més opcions de treball amb dates i hores.

La variable esdev contindrà, en forma de vector, tots els esdeveniments existents al calendari. Podem saber quants consultant la seva llargada.

  var numEsdev = esdev.length;  // Quants n'hi ha?

Per a cada esdeveniment podem saber el títol o descripció i les dates i hores d'inici i final.

  var descrip = esdev[0].getTitle();  // Títol de l'esdeveniment
  var dataIni = esdev[0].getStartTime();  // Data i hora d'inici
  var dataFi = esdev[0].getEndTime();  // Data i hora d'acabament
  // En aquest cas la data és la d'avui i ens interessen només les hores 
  // d'inici i acabament i les volem en el format habitual en català
  var ini = dataIni.getHours() + "." + dataIni.getMinutes();
  var fi = dataFi.getHours() + "." + dataFi.getMinutes();

La taula següent conté les funcions que ens proporcionen les dades d'un esdeveniment que podem necessitar més freqüentment. Podem trobar la llista completa aquí.

Funció Descripció
getColor() Color amb el que l'esdeveniment està marcat al calendari
getCreators() Vector amb els usuaris que han creat l'event
getDateCreated() Data i hora de la creació de l'event
getDescription() Descripció de l'event (si s'ha omplert la casella)
getEndTime() Data i hora d'acabament
getId() Identificador de l'event
Permet diferenciar entre dos esdeveniments iguals
getLastUpdated() Data i hora de la darrera modificació
getLocation() Lloc on es farà l'event (si s'ha omplert la casella)
getStartTime() Data i hora d'inici
getTitle() Títol de l'esdeveniment

També podem llegir propietats del calendari. La taula següent conté les funcions que ens proporcionen les dades d'un calendari que podem necessitar més freqüentment. Podem trobar la llista completa aquí.

Funció Descripció
getCalendarById(id) Agafa el calendari que té l'identificador indicat
getColor() Color assignat al calendari
getEventById(id) Selecciona l'esdeveniment que té l'identificador indicat
getEvents(inici, final) Llista d'events en un interval
getEventsForDay(dia) Llista d'events en el dia indicat
Es posa un instant com a paràmetre i agafarà tot el dia corresponent
getId() Identificador del calendari
getName() Nom del calendari

Afegir o modificar esdeveniments i propietats del calendari

Per afegir esdeveniments al calendari podem fer servir la funció createEvent a la que donarem tres paràmetres: el nom de l'esdeveniment, l'instant d'inici i l'instant d'acabament.

  var cal = CalendarApp.getCalendarById(idCal);
  cal.createEvent(acte, inici, final);

La taula següent conté les funcions que ens permetes modificar els esdeveniments del calendari. Podem trobar la llista completa aquí.

Funció Descripció
deleteEvent() Esborra l'esdeveniment
setAllDayDate(data) Fixa la data per a un esdeveniment de tot el dia
setAllDayDates(startDate, endDate) Fixa les dates per a un esdeveniment que abasta més d'un dia
setColor(color) Canvia el color de l'esdeveniment
Cal un color en format RGB (per exemple: #FAD165)
setDescription(description) Omple la descripció de l'esdeveniment
setLocation(lloc) Modifica la localització de l'esdeveniment
setTime(inici, final) Modifica les hores d'inici i final de l'esdeveniment
setTitle(title) Modifica el nom de l'esdeveniment

La taula següent conté les funcions que ens permetes afegir esdeveniments i modificar les propietats del calendari. Podem trobar la llista completa aquí.

Funció Descripció
createAllDayEvent(nomEsdev, dia) Crea un esdeveniment de tot el dia
createAllDayEvent(nomEsdev, inici, final) Crea un esdeveniment de tot el dia durant diversos dies
createEvent(nomEsdev, inici, final) Crea un esdeveniment que no és de tot el dia
setColor(color) Canvia el color del calendari
Cal un color en format RGB (per exemple: #FAD165)
setDescription(desc) Omple la descripció del calendari
setName(nom) Canvia el nom del calendari

En aquest exemple podem veure un exemple d'ús d'algunes d'aquestes funcions.

Gestionar els convidats a un esdeveniment

En els esdeveniments es poden definir les persones assistents, identificades amb la seva adreça de correu electrònic. Les persones definides com a assistents veuran l'esdeveniment al seu propi calendari. Disposem de funcions per consultar els assistents a un esdeveniment i per afegir-ne. La taula següent conté les funcions més habituals. Podem trobar la llista completa aquí.

Funció Descripció
addGuest(correu) Afegeix un convidat a l'esdeveniment
getGuestList() Obté la llista de convidats
removeGuest(correu) Elimina un convidat a l'esdeveniment

Un cop haguem consultat la llista de convidats, podem veure el correu electrònic de cada un fent servir la funció getEmail. Per exemple:

  var cal = CalendarApp.getCalendarById(idCal);
  var event = cal.getEventById(idEvent);
  var convidats = event.getGuestList();
  var correu = convidats[0].getEmail();

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.