Bots de conversa | Exemples | Dades pràctiques | Recursos CITCEA | |
Google Apps Script | Projectes | Interacció | Inici |
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ó.
Despleguem l'opció Afegeix un calendari i piquem a 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.
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); }
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 |
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.
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();
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.