[#ICAL] HowTo: Crear un archivo ics

Hola!

Hace 2 días tuve la buenaventurada idea de crear un archivo ICS como parte de una app C#. Lo extraño es que cuando buscas en internet, lo primero que vi son ejemplos utilizando automation de Oulook. Esto ya de por sí da miedo, porque además de tener un modelo de seguridad muy restringido, utilizar Office Automation en un server es cosa de suicidas.

Pues bíen, me fui a las fuentes y encontré la definición de Internet Calendar, además de un ejemplo en texto plano como el siguiente:

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

Si creas un archivo en blanco con extensión ICS, lo editas con un editor de texto y pegas este contenido dentro del mismo, … pues ya estás más cerca. Lo que hice fue una pequeña rutina en C# que me genera el contenido del ICS:

   1: private const string DateFormat = "yyyyMMddTHHmmssZ";

   2:  

   3: public string GenerateIcsContent(DateTime dateStart, 

   4:               DateTime dateEnd, string email, string location, 

   5:               string summary, string description)

   6:         {

   7:             var s = dateStart.ToUniversalTime().ToString(DateFormat);

   8:             var e = dateEnd.ToUniversalTime().ToString(DateFormat);

   9:             var iCal = string.Format(@"BEGIN:VCALENDAR

  10: VERSION:2.0

  11: METHOD:PUBLISH

  12: BEGIN:VEVENT

  13: ORGANIZER:MAILTO:{0}

  14: DTSTART:{1}

  15: DTEND:{2}

  16: LOCATION:{3}

  17: UID:{4}

  18: DTSTAMP:{4}

  19: SUMMARY:{5}

  20: DESCRIPTION:{6}

  21: PRIORITY:5

  22: CLASS:PUBLIC

  23: END:VEVENT

  24: END:VCALENDAR", email, s, e, location, 

  25:                 DateTime.Now.ToUniversalTime().ToString(DateFormat), 

  26:                 summary, description);

  27:             return iCal;

  28:         }

luego lo grabo con extensión ICS y iisto !!!

Wikipedia: http://en.wikipedia.org/wiki/ICalendar

Saludos @ Home

El Bruno

image image image Google
Advertisements

3 thoughts on “[#ICAL] HowTo: Crear un archivo ics

  1. Hola!, como aproximación está bien. Tienes que tener en cuenta que una linea no puede tener más de 70 caracteres (lo digo de memoria), y tal como lo generas tiene que ser UTF8. Y por supuesto, aunque lo tienes en cuenta, es que el retorno de carro tiene que ser CR+LF. Hace un tiempo tuve que generar un ics, y lo que en principio parecía sencillisimo se complicó un poco más de lo necesario…. con algunas cosas como añadir html en el summar y similares.

    Like

  2. bueno yo lo que nesesito es agregar una serie de eventos que tengo en un archivo de excel asi:
    20150727;lucas 1
    20150728;juan 3
    20150729;santiado 7

    y quiero que funcione en un archivo de .ics
    que es lo que le debo sustituir en cada dato para que en mi calendario me aparezca cada cita en el día que corresponde?
    son un poco menos de 350 citas una por día
    se los agradecería mucho

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s