¿Qué es ICS (iCalendar)?
El formato ICS (extensión de archivo .ics) es el estándar para almacenar e intercambiar datos de calendario. Basado en la especificación iCalendar (RFC 5545), es un formato de texto plano compatible con todas las aplicaciones de calendario importantes: Google Calendar, Microsoft Outlook, Apple Calendar, Mozilla Thunderbird y cientos de herramientas de planificación.
Historia del estándar iCalendar
El estándar iCalendar fue desarrollado por el Internet Engineering Task Force (IETF) y publicado por primera vez como RFC 2445 en noviembre de 1998. Se diseñó para estandarizar el intercambio de datos de calendario entre diferentes aplicaciones y plataformas, sustituyendo al anterior estándar vCalendar 1.0 creado por el Versit Consortium (el mismo grupo responsable del vCard).
En 2009, el RFC 2445 fue reemplazado por RFC 5545, que aclaró ambigüedades, corrigió inconsistencias y mejoró el manejo de zonas horarias. Una especificación complementaria, RFC 5546, define el iTIP (iCalendar Transport-Independent Interoperability Protocol) — el mecanismo utilizado para enviar invitaciones a reuniones por correo electrónico.
Hoy en día, iCalendar está universalmente soportado: Google Calendar, Microsoft Outlook, Apple Calendar, Thunderbird, Fastmail, Proton Calendar, Calendly, Cal.com y prácticamente cualquier aplicación de planificación lee y escribe archivos .ics.
Estructura técnica de un archivo ICS
Los archivos ICS son texto plano codificado en UTF-8, con un formato línea a línea PROPIEDAD:VALOR. Cada archivo comienza con BEGIN:VCALENDAR y termina con END:VCALENDAR.
Propiedades principales
VERSION:2.0— versión de iCalendar (siempre 2.0 para RFC 5545)PRODID— identificador del software que creó el archivoCALSCALE:GREGORIAN— sistema de calendario (Gregoriano es el predeterminado)METHOD— utilizado en invitaciones por correo (PUBLISH, REQUEST, REPLY, CANCEL)
Componentes
| Componente | Descripción |
|---|---|
VEVENT |
Un evento de calendario (reunión, cita, festivo) |
VTODO |
Una tarea con fecha de vencimiento opcional |
VJOURNAL |
Una entrada de diario asociada a una fecha |
VFREEBUSY |
Información de disponibilidad para planificación |
VTIMEZONE |
Definición de zona horaria referenciada por eventos |
Propiedades clave de VEVENT
| Propiedad | Descripción |
|---|---|
UID |
Identificador único del evento |
DTSTART |
Fecha y hora de inicio |
DTEND |
Fecha y hora de fin |
SUMMARY |
Título del evento |
DESCRIPTION |
Descripción detallada |
LOCATION |
Ubicación física o virtual |
ORGANIZER |
Organizador del evento (dirección de correo) |
ATTENDEE |
Asistente invitado con estado RSVP |
RRULE |
Regla de recurrencia (para eventos repetidos) |
VALARM |
Componente de recordatorio/alarma |
Ejemplo completo de VEVENT
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//KaijuConverter//Calendar//ES
BEGIN:VEVENT
UID:reunion-2025-04-25@kaijuconverter.com
DTSTART:20250425T140000Z
DTEND:20250425T150000Z
SUMMARY:Reunión de Equipo
DESCRIPTION:Sincronización semanal con el equipo
LOCATION:Sala de Conferencias A
ORGANIZER:mailto:organizador@ejemplo.com
ATTENDEE;RSVP=TRUE:mailto:colega@ejemplo.com
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:La reunión comienza en 15 minutos
END:VALARM
END:VEVENT
END:VCALENDAR
Reglas de recurrencia (RRULE)
Una de las características más potentes de iCalendar es la propiedad RRULE, que define eventos repetidos con una sintaxis compacta.
# Cada lunes, miércoles y viernes hasta fin de 2025
RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20251231T000000Z
# Mensualmente el último viernes
RRULE:FREQ=MONTHLY;BYDAY=-1FR
# Cada 2 semanas los martes
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=TU
# Anualmente (aniversario)
RRULE:FREQ=YEARLY
Parámetros de RRULE:
FREQ— DAILY, WEEKLY, MONTHLY, YEARLYINTERVAL— repetir cada N períodos (predeterminado 1)BYDAY— días específicos de la semana (MO, TU, WE, TH, FR, SA, SU)UNTIL— fecha de fin de la recurrenciaCOUNT— número máximo de ocurrencias
Zonas horarias en ICS: la parte complicada
El manejo de zonas horarias es la fuente más común de errores en importaciones ICS. ICS admite tres enfoques:
1. Hora UTC (recomendado para eventos sin ambigüedad):
DTSTART:20250425T140000Z
El sufijo Z significa UTC. Esto es inequívoco — cada aplicación de calendario mostrará la hora local correcta.
2. Zona horaria nombrada (para eventos que deben seguir la hora local):
DTSTART;TZID=Europe/Madrid:20250425T160000
Requiere un bloque VTIMEZONE correspondiente en el archivo, o que la aplicación reconozca el nombre de la zona horaria.
3. Hora flotante (sin zona horaria — peligroso):
DTSTART:20250425T160000
Sin Z, sin TZID. Cada aplicación de calendario interpreta esto como la hora local del usuario, lo que hace que los eventos aparezcan a la hora incorrecta para asistentes en diferentes zonas horarias.
Buena práctica: Utiliza siempre UTC (Z) para eventos compartidos entre zonas horarias. Un evento a las 14:00 UTC son las 10:00 en Nueva York, las 15:00 en Londres, las 16:00 en Madrid — las aplicaciones de calendario convierten automáticamente para cada usuario.
Qué pueden contener los archivos ICS
- Eventos únicos — una reunión o cita puntual
- Exportaciones completas de calendario — todos los eventos de un calendario entero
- Eventos recurrentes — reuniones que se repiten diaria, semanal, mensual o anualmente
- Eventos de día completo — usan tipo
DATEen lugar deDATETIME(DTSTART;VALUE=DATE:20250425) - Eventos con URLs — enlace a una reunión online o documento
- Listas de asistentes — con estado RSVP (ACCEPTED, DECLINED, TENTATIVE)
- Alarmas/recordatorios — el componente
VALARMse activa en un tiempo especificado antes del evento - Tareas — el componente
VTODOcon fechas de vencimiento y estado de completado opcionales
Suscribirse vs. Importar ICS
Estas son dos operaciones fundamentalmente diferentes:
| Importar (archivo) | Suscribirse (URL) | |
|---|---|---|
| Cómo | Abrir un archivo .ics |
Añadir una URL webcal:// o https:// |
| Actualizaciones | Instantánea única | Sincronizado en vivo, se actualiza automáticamente |
| Caso de uso | Agenda de conferencias, eventos únicos | Calendarios deportivos, festivos, calendarios de colegas |
| Cambios | No se propagan | Se reflejan automáticamente |
Cuándo suscribirse: calendarios deportivos públicos, fechas de lanzamiento, calendarios compartidos de colegas, calendarios de festivos.
Cuándo importar: agendas de conferencias, eventos únicos recibidos de un contacto, datos de calendario archivados.
Dónde se usan los archivos ICS
- Invitaciones de reunión por correo — cada botón "Añadir al Calendario" en Gmail/Outlook genera y adjunta un archivo
.ics - Exportación de Google Calendar — Configuración → Importar y exportar → Exportar crea un
.icspor cada calendario - Compartir calendarios en Outlook — Archivo → Guardar Calendario genera un archivo
.ics - Suscripciones a calendarios públicos — calendarios de equipos deportivos, festivos, programas de conferencias
- Aplicaciones de planificación — Calendly, Cal.com y Acuity Scheduling envían archivos
.icsde confirmación al organizador y al asistente - Reservas de vuelos/hoteles — muchos correos de confirmación de reservas incluyen un archivo
.icsadjunto con las fechas del viaje - Herramientas de gestión de proyectos — Jira, Asana y Linear pueden exportar fechas límite de sprints como calendarios ICS
Cómo importar archivos ICS
Google Calendar
- Ve a calendar.google.com en escritorio (la importación no está disponible en la app móvil)
- Haz clic en el icono de engranaje → Configuración
- Navega a Importar y exportar → Importar
- Selecciona tu archivo
.icsy elige en qué calendario importar - Haz clic en Importar
Consejo: Si recibiste un .ics adjunto en Gmail, Gmail muestra un botón "Añadir al Calendario" directamente en el correo — no necesitas importar manualmente.
Microsoft Outlook
- Archivo → Abrir y exportar → Importar o exportar
- Selecciona Importar un archivo iCalendar (.ics) o vCalendar
- Busca tu archivo
.icsy haz clic en Aceptar - Elige abrir como calendario nuevo o importar a uno existente
Apple Calendar
- Archivo → Importar
- Selecciona tu archivo
.ics - Elige a qué calendario añadir los eventos
Atajo universal: La mayoría de las aplicaciones de calendario en escritorio también admiten simplemente hacer doble clic en un archivo .ics — el sistema operativo lo abre en la aplicación de calendario predeterminada y solicita confirmación para importar.
Crear archivos ICS de forma programática
Plantilla ICS mínima (editor de texto)
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//KaijuConverter//Calendar//ES
BEGIN:VEVENT
UID:id-unico@tudominio.com
DTSTART:20250425T140000Z
DTEND:20250425T150000Z
SUMMARY:Reunión de Equipo
DESCRIPTION:Sincronización semanal con el equipo
LOCATION:Sala de Conferencias A
END:VEVENT
END:VCALENDAR
Guarda con extensión .ics y los destinatarios pueden abrirlo en cualquier aplicación de calendario.
Python (librería icalendar)
pip install icalendar
from icalendar import Calendar, Event
from datetime import datetime, timezone
cal = Calendar()
cal.add('prodid', '-//KaijuConverter//Calendar//ES')
cal.add('version', '2.0')
event = Event()
event.add('summary', 'Reunión de Equipo')
event.add('dtstart', datetime(2025, 4, 25, 14, 0, 0, tzinfo=timezone.utc))
event.add('dtend', datetime(2025, 4, 25, 15, 0, 0, tzinfo=timezone.utc))
event.add('description', 'Sincronización semanal con el equipo')
event['uid'] = 'reunion-2025-04-25@kaijuconverter.com'
cal.add_component(event)
with open('reunion.ics', 'wb') as f:
f.write(cal.to_ical())
Convertir archivos ICS
- ICS a CSV — extraer datos de eventos (título, inicio, fin, ubicación) en filas de hoja de cálculo para análisis
- ICS a PDF — crear un calendario imprimible o agenda de eventos
- ICS a JSON — para consumo en aplicaciones web
- Varios archivos ICS en uno — combinar varias exportaciones de calendario en un único archivo
Utiliza KaijuConverter para convertir archivos .ics a CSV, JSON u otros formatos al instante.
Conversiones relacionadas
Conversiones frecuentes del catálogo: