Usando el API de Google Calendar

Google Calendar

Google Calendar

Hace algunos días y precisamente antes del GoogleIO de este año estaba tratando de implementar el API de google calendar para agregarlo como funcionalidad en #LeventoCRM, debo decir que la documentación estaba horrible, pero el día de la inauguración del GoogleIO, cambiaron el diseño de las páginas de la documentación y mejoró grandemente a tal grado que pude terminar con mayor facilidad la implementación.

El API de google calendar está bastante completa a excepción de los eventos en los cuales no encontré como crear eventos para todo el día y siempre me forza a establecer horarios de inicio y finalización.

Este es un ejemplo escrito en PHP el cual resume la creación de un calendario a través de esta API.

$client = new Google_Client();
$client->setApplicationName(Yii::app()->name);
$client->setAuthConfigFile(getcwd().'/protected/vendors/google/client_secret.json');
 
$service = new Google_Service_Calendar($client);
 
// Crear un nuevo calendario
$calendar = new Google_Service_Calendar_Calendar();
$calendar->setSummary('TITULO CALENDARIO');
$calendar->setDescription('DESCRIPCION CALENDARIO');
$calendar->setTimeZone('America/Mexico_City');
$createdCalendar = $service->calendars->insert($calendar);
$calendarId = $createdCalendar->getId();
 
// Crear un nuevo evento
$event = new Google_Service_Calendar_Event();
$event->setSummary('TITULO EVENTO');
$event->setDescription('DESCRIPCION EVENTO');
 
// Fecha de inicio (del día actual a las 8am)
$date = new DateTime(date('Y-m-d'), new DateTimeZone('America/Mexico_City'));
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime($date->format('Y-m-d').'T08:00:00');
$start->setTimeZone('America/Mexico_City');
$event->setStart($start);
 
// Fecha de cierre (del día actual a las 6pm)
$date = new DateTime(date('Y-m-d'), new DateTimeZone('America/Mexico_City'));
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime($date->format('Y-m-d').'T18:00:00');
$end->setTimeZone('America/Mexico_City');
$event->setEnd($end);
 
$remindersArray = array();
 
// Crear recordatorios
$reminder = new Google_Service_Calendar_EventReminder();
$reminder->setMethod('email');
$reminder->setMinutes(25);
$remindersArray[] = $reminder;
 
$reminder = new Google_Service_Calendar_EventReminder();
$reminder->setMethod('popup');
$reminder->setMinutes(15);
$remindersArray[] = $reminder;
 
$reminders = new Google_Service_Calendar_EventReminders();
$reminders->setUseDefault(false);
$reminders->setOverrides($remindersArray);
$event->setReminders($reminders);
 
$attendees = array();
 
// Agregar los Participantes
$attendee = new Google_Service_Calendar_EventAttendee();
$attendee->setEmail('info@qbit.com.mx');
$attendees[] = $attendee;
 
$event->attendees = $attendees;
 
$createdEvent = $service->events->insert($calendarId, $event, array(
     'sendNotifications' => true
));

Más o menos así va el código, aunque como siempre esto se puede mejorar (igual que todo). Otra cosa que no me gustó es que la sincronización con mi teléfono android no es del todo transparente, ya que es necesario ir a las preferencias del calendario y activarle la opción de sincronizarse automáticamente, porque desde el API no existe una opción para pedir que aparezca sincronizado desde los equipos.

Si encuentran un error en el código me avisan y si les funciona, comenten.

Happy Coding! 🙂

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook1