Insertar un botón en tu web para añadir un evento a Google Calendar.

alojamiento wordpress

Hola a todos:

Si mostramos eventos en una página web puede ser interesante añadir un botón para que el visitante pueda pinchando en el añadir el evento a su calendario en google calendar.

He creado una función en php que nos permite de forma sencilla crear la url necesaria para crear el enlace que nos cree el evento en google calendar:

<?php
/********************************************************************
* Función getGCalendar (Eduardo Revilla Vaquero)                    *
* Genera url para la creación de un evento en google calendar.      *
*********************************************************************/

function getGCalendarUrl($event){ $titulo = urlencode($event['titulo']); $descripcion = urlencode($event['descripcion']); $localizacion = urlencode($event['localizacion']); $start=new DateTime($event['fecha_inicio'].' '.$event['hora_inicio'].' '.date_default_timezone_get()); $end=new DateTime($event['fecha_fin'].' '.$event['hora_fin'].' '.date_default_timezone_get()); $dates = urlencode($start->format("Ymd\THis")) . "/" . urlencode($end->format("Ymd\THis")); $name = urlencode($event['nombre']); $url = urlencode($event['url']); $gCalUrl = "http://www.google.com/calendar/event?action=TEMPLATE&amp;text=$titulo&amp;dates=$dates&amp;details=$descripcion&amp;location=$localizacion&amp;trp=false&amp;sprop=$url&amp;sprop=name:$name"; return ($gCalUrl); }

 

La función recibe como parámetro un array asociativo con los campos necesarios para crear el evento.

Un ejemplo del array sería este:

$evento = array(
 'titulo' => 'Mi evento de prueba',
 'descripcion' => 'Descripcion del evento de prueba',
 'localizacion' => 'Aqui ponemos la dirección donde se celebra el evento',
 'fecha_inicio' => '2014-04-10', // Fecha de inicio de evento en formato AAAA-MM-DD
 'hora_inicio'=>'17:30', // Hora Inicio del evento
 'fecha_fin'=>'2014-04-12', // Fecha de fin de evento en formato AAAA-MM-DD
 'hora_fin'=>'19:00', // Hora final del evento
 'nombre'=>'ReviBlog', // Nombre del sitio
 'url'=>'www.reviblog.net' // Url de la página
);

Ahora solo nos queda crear el link en html asignandole la url devuelta por la función getGCalendarUrl:

<a href="<?php echo getGCalendarUrl($evento); ?>"><img src="http://www.google.com/calendar/images/ext/gc_button6_es.gif" border="0"></a>

Para probarlo puedes crear un archivo php y pegar el siguiente código donde todo junto quedaria así:

<?php
/********************************************************************
* Función getGCalendar (Eduardo Revilla Vaquero)                    *
* Genera url para la creación de un evento en google calendar.      *
*********************************************************************/function getGCalendarUrl($event){  
$titulo = urlencode($event['titulo']); 
$descripcion = urlencode($event['descripcion']); 
$localizacion = urlencode($event['localizacion']); 
$start=new DateTime($event['fecha_inicio'].' '.$event['hora_inicio'].' '.date_default_timezone_get()); 
$end=new DateTime($event['fecha_fin'].' '.$event['hora_fin'].' '.date_default_timezone_get()); $dates = urlencode($start->format("Ymd\THis")) . "/" . urlencode($end->format("Ymd\THis"));
$name = urlencode($event['nombre']);
$url = urlencode($event['url']);
$gCalUrl = "http://www.google.com/calendar/event?action=TEMPLATE&amp;text=$titulo&amp;dates=$dates&amp;details=$descripcion&amp;location=$localizacion&amp;trp=false&amp;sprop=$url&amp;sprop=name:$name";
return ($gCalUrl);
}
// array asociativo con los parametros mecesarios.
$evento = array(
  'titulo' => 'Mi evento de prueba',
  'descripcion' => 'Descripcion del evento de prueba',
  'localizacion' => 'Aqui ponemos la dirección donde se celebra el evento',
  'fecha_inicio' => '2014-04-10', // Fecha de inicio de evento en formato AAAA-MM-DD
'hora_inicio'=>'17:30', // Hora Inicio del evento
'fecha_fin'=>'2014-04-12', // Fecha de fin de evento en formato AAAA-MM-DD
'hora_fin'=>'19:00', // Hora final del evento
'nombre'=>'ReviBlog', // Nombre del sitio
'url'=>'www.reviblog.net' // Url de la página
);
?>
<a href="<?php echo getGCalendarUrl($evento); ?>"><img src="http://www.google.com/calendar/images/ext/gc_button6_es.gif" border="0"></a>

Este código nos generará un botón como este:

 

Espero que sea de utilidad.

Un saludo

P.D: Podeis probar mis últimos juegos para móviles. Si ponéis una valoración en alguno me haceis un favor 😉

ico_beheading_androidico_beheading_iosico_beheading_wpGalactic InsectsGalactic InsectsGalactic InsectsSnow SoccerSnow Soccer

alojamiento wordpress

Anuncios

18 comentarios en “Insertar un botón en tu web para añadir un evento a Google Calendar.

  1. Estudio Ingeniería en Computación, lo probé y funciona perfecto. Con su permiso lo usaré como parte de mi tesis, dada a su gran funcionalidad. Saludos desde Chile.

  2. Hola Eduardo, me podrías decir qué librería de cliente utilizas?? Tu ejemplo me funciona perfectamente, pero quiero hacerlo yo y no hay manera 😦

    Un saludo y muchas gracias. Ana

    1. Hola Ana,
      No se necesita ninguna librería de cliente. En principio llamando a la función pasándole los parámetros como indico debería funcionar. ¿Puedes poner el código que estás utilizando para crear el botón para ver si hay algún error y te puedo ayudar?

      Gracias por comentar

  3. <?php
    require_once 'google-api-php-client/src/Google_Client.php';
    require_once 'google-api-php-client/src/contrib/Google_CalendarService.php';
    $opcion="insertar";

    En realidad, mi problema es este:

    Warning: require_once(google-api-php-client/src/Google_Client.php): failed to open stream

    Necesito insertar, modificar, eliminar eventos en un calendario utilizando PHP, hace "mil años" que abandoné la programación y ahora estoy muy perdida con todo esto.

    En todos los manuales que encuentro, me dicen que necesito la biblioteca… Como puedes ver estoy muy, muy liada 😦

    Muchas gracias por tu respuesta. Ana.

    1. Hola de nuevo Ana:

      Yo en mi post enseño como añadir un evento de manera sencilla generando una url. Esto nos sirve para colocar un botón o un enlace en nuestra página para añadir un evento a google calendar. Si necesitas modificar o eliminar el evento desde php entonces si te hace falta utilizar las librerías que comentas. En ese caso el error que te está dando es que no encuentra ese archivo. Verifica que se encuentra en la ruta correcta a partir de la ruta relativa al archivo que le llama. Por otro lado en este link: http://blogs.ua.es/labseps/2014/10/17/insertar-un-evento-en-un-calendario-publico-de-google-con-php-y-la-api-v3/ he encontrado información que tal vez te sirva de ayuda. No desesperes Ana, la programación puede ser difícil si llevas tiempo sin programar, pero cuando por fin lo consigues es una satisfacción muy grande :-). Ánimo que ya verás como al final lo consigues 🙂

      Un saludo

      1. Hola de nuevo, Eduardo:

        Muchísimas gracias por tus ánimos, por supuesto que lo voy a conseguir 🙂 y además te lo contaré 😉

        Mira, esa página que me envías, la tengo mirada de arriba a abajo. Pero cuando tú me la has indicado, la he vuelto a revisar y he entrado donde pone “… Nos hemos basado principalmente en las indicaciones de este artículo…” Ahí, en la documentación anterior, he encontrado el comentario de un chico, Kyle Fritz, que “se quejaba” de la falta de actualización en la documentación de Google cuando se producen cambios…

        En su comentario sí se reflejaban esos cambios y finalmente he conseguido que mi biblioteca FUNCIONE!!!!

        Te pongo lo que te escribí en el mensaje anterior, pero esta vez actualizado:

        <?php
        require_once 'google-api-php-client/src/Google/Client.php';
        require_once 'google-api-php-client/src/Google/Service/Calendar.php';

        Una vez más, muchísimas gracias!!! 😉 … prometo volver a preguntarte alguna duda otro día 😛

        Saludos, Ana.

    1. Hola Mark:

      Para poder añadir eventos al calendario en iOS (iCalendar) necesitas generar un archivo .ics, lo puedes generar a mano o con algún lenguaje de servidor(php etc), pero no puedes hacerlo directamente desde una url. Lo que si puedes hacer es que esa url enlace al archivo ics.
      El el contenido del archivo ics tiene que tener un aspecto similar a esto:

      BEGIN:VCALENDAR
      VERSION:2.0
      PRODID:-//hacksw/handcal//NONSGML v1.0//EN
      BEGIN:VEVENT
      UID:uid1@example.com
      DTSTAMP:19970714T170000Z
      ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
      DTSTART:19970714T170000Z
      DTEND:19970715T035959Z
      SUMMARY:Bastille Day Party
      END:VEVENT
      END:VCALENDAR

      Para más información echa un vistazo a este articulo wikipedia:

      https://en.wikipedia.org/wiki/ICalendar

      Un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s