ICS

¿Qué es un archivo ICS?

El formato de intercambio de calendarios. Cada invitación que has recibido es un archivo de estos.

Qué es ICS

ICS es un formato de texto plano que se abre en cualquier editor. Se usa para mover datos entre programas.

La extensión es .ics y el nombre completo, iCalendar. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.

De dónde viene ICS

Se remonta a 1998. La especificación es RFC 5545.

A un formato que lleva tanto tiempo siendo legible se le puede confiar algo que quieras recuperar dentro de diez años.

La especificación es pública

Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.

No se tira nada

ICS guarda su contenido exactamente. Volver a guardarlo no cambia nada, así que puedes abrirlo, editarlo y guardarlo tantas veces como quieras sin acumular daño; eso es lo que lo convierte en un formato de trabajo y no de entrega.

Qué abre ICS

Google Calendar, Apple Calendar y Microsoft Outlook lo leen, y también la mayoría de programas del mismo tipo.

Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.

Abrirlo en el navegador

Ningún navegador lo lee.

Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.

Es un formato de trabajo

ICS está pensado para abrirse y cambiarse. Guarda el archivo en este formato mientras el trabajo siga en marcha y exporta desde él cada vez que haga falta una copia terminada.

Dos cosas distintas viajan bajo la misma extensión

Un archivo ICS es o bien un evento que alguien te ha mandado, o bien un calendario al que te suscribes, y casi todos los problemas con el formato empiezan por confundir los dos.

El primero es la invitación adjunta a un correo: describe una cita — o una serie corta — y está pensado para abrirse una vez e importarse. El segundo es una dirección web que la aplicación de calendario consulta una y otra vez: un horario de clases, el calendario de partidos, los turnos de un equipo, los festivos de tu comunidad o de tu país. La estructura del archivo es la misma en los dos casos y el uso es opuesto. Descargar una suscripción e importarla en lugar de suscribirse produce una copia congelada que no vuelve a actualizarse nunca, y es el error más repetido de todos.

Qué hay escrito dentro

Texto plano, con una estructura lo bastante vieja como para parecerlo: una propiedad por línea, todo en mayúsculas, con las líneas cortadas a 75 caracteres y una convención de continuación que consiste en empezar la siguiente con un solo espacio. Cada evento vive entre marcas de apertura y cierre, con hora de inicio, hora de fin, un resumen, casi siempre una descripción y un lugar, y un identificador único.

Ese identificador es la pieza que se comporta como nadie espera. Es lo que permite que un calendario reconozca una actualización como perteneciente a una cita que ya tiene, en vez de como una cita nueva. Reenviar la invitación con el mismo identificador mueve la original; reenviarla con uno recién generado deja a todo el mundo con dos reuniones.

Las horas, que es donde se tuerce casi todo

Una cita puede llevar la hora escrita de tres maneras y no se comportan igual. Una hora local sin zona significa «a las diez, estés donde estés», que es correcto para un cumpleaños y desastroso para una reunión. Una hora en UTC, marcada con una Z al final, es un instante fijo que cada calendario traduce a la zona de quien lee. Y una hora con zona nombrada lleva dentro del archivo la definición completa de esa zona, de modo que la traducción sigue siendo válida incluso cuando cambia la hora.

Aquí la geografía importa más de lo que parece. La Península observa el cambio de hora dos veces al año, Canarias va una hora por detrás, y buena parte de Hispanoamérica no cambia la hora en absoluto. Una convocatoria escrita como hora local por un sistema que dio por hecho que todo el mundo estaba en el mismo sitio es la explicación habitual de una cita que aparece una hora desplazada para unos y no para otros; y una cita que estuvo bien hasta el último domingo de marzo es el mismo fallo un nivel más abajo, con un desfase fijo anotado donde correspondía una zona con nombre.

Repeticiones descritas con una regla, no con copias

La repetición se expresa como una regla en lugar de escribir cada ocurrencia: cada dos martes, el último viernes de mes, todos los días laborables hasta una fecha. Es compacto y es exacto, y por eso un año entero de reuniones diarias ocupa unos cientos de bytes.

Lo que lo complica son las excepciones. Una sesión cancelada y otra movida a otro día se guardan como enmiendas a la serie, y las aplicaciones difieren en hasta qué punto implementan eso. Es la razón de que mover una sola instancia de una reunión periódica mueva a veces todas en el calendario de otra persona: la regla sobrevivió al viaje y la excepción no.

Importarlo en Google Calendar, Outlook y Calendario de Apple

Para un archivo suelto, los tres hacen lo mismo: una importación que copia los eventos una vez. En Google Calendar está en Configuración, Importar y exportar; en Outlook, en Archivo, Abrir y exportar; en un Mac, en Archivo, Importar. Elige antes qué calendario los recibe, porque separarlos después es tedioso.

Para un canal, usa la opción de suscripción y dale la dirección, no un archivo descargado. Google la llama «Desde URL», Apple habla de suscripción a un calendario y Outlook de suscribirse desde la web. A partir de ahí el calendario vuelve a consultar por su cuenta, y Google y Outlook lo hacen en un ritmo medido en horas que no se puede configurar, mientras que Apple ofrece un menú de actualización automática que baja hasta cinco minutos. Que un cambio en el origen no se vea al instante es lo normal, no una avería.

Generar invitaciones desde tu propia aplicación

Cualquier sistema que reserve algo — venta de entradas, un formulario de cita previa, una inscripción a un curso — acaba necesitando adjuntar un ICS para que el cliente lo meta en su calendario. Tres detalles separan al que funciona del que genera incidencias.

Usa una zona horaria con nombre en lugar de una hora local desnuda, o un instante en UTC si el evento ocurre en un momento único. Mantén estable el identificador entre la confirmación, el recordatorio y el aviso de cambio, para que las actualizaciones caigan sobre la cita existente. Y adjunta el archivo con su tipo de medio correcto: enviado como adjunto binario genérico, los clientes de correo lo enseñan como un fichero para descargar en vez de como una invitación que se acepta.

Abrirlo y retocarlo a mano

Es texto, así que lo abre cualquier editor, y para un solo evento suele ser la forma más rápida de ver qué le están contando realmente al calendario. La convención de corte de línea es lo único que hay que respetar: una línea continuada empieza con un espacio, y quitar ese espacio cambia la propiedad sin avisar.

Editar a mano es razonable para un arreglo puntual — una fecha equivocada, una errata en el título, un resumen que hay que anonimizar antes de compartir el archivo. Para cualquier cosa estructural, y muy especialmente para las reglas de repetición, deja que lo escriba una aplicación de calendario: la sintaxis es exigente, el fallo consiste en que el evento aparezca en días equivocados durante un año, y nadie se da cuenta hasta que alguien falta a una reunión.

Qué te devuelve exactamente la conversión a CSV

La conversión se ejecuta en tu navegador — el calendario no se sube a ningún sitio — y produce una tabla de nueve columnas leyendo únicamente los eventos. Las tareas, las notas de diario, las alarmas y los adjuntos no aparecen, porque no son eventos y la tabla no tiene dónde ponerlos.

Hay dos pérdidas que conviene tener presentes antes de fiarse del resultado. Las repeticiones no se despliegan ni se avisan: una reunión semanal durante un año sale como una sola fila, no como cincuenta y dos. Y las zonas horarias no se convierten — la hora se escribe tal cual venía y el nombre de la zona se descarta —, así que la columna muestra una hora local sin indicación de a qué huso pertenece. Convertirla exigiría una base de datos de husos, y suponer UTC movería todas las citas de sitio. En el sentido contrario no hay conversión de CSV a ICS a propósito: una cita necesita zona, identificador y duración, columnas que una tabla no trae, e inventarlas produce archivos que se importan con buen aspecto y están sutilmente mal.

Los datos, en un solo sitio

Identificadores y procedencia del formato ICS.
Extensión.ics, .ical
Tipo de mediotext/calendar
Primera publicación1998
EspecificaciónRFC 5545

Archivos ICS: dudas frecuentes

¿Cómo se abre un archivo ICS?

Haciendo doble clic: la aplicación de calendario se ofrece a importar los eventos. Para ver antes qué contiene, ábrelo con cualquier editor de texto, porque es texto plano. Si en realidad es un canal de suscripción y no un evento suelto, usa la opción de suscribirte con la dirección web en lugar de importar el archivo descargado.

¿Por qué la cita aparece una hora desplazada?

Casi seguro porque el evento se escribió como hora local sin zona horaria, así que cada calendario la interpreta en la suya. Las citas con un momento fijo deben ir en UTC o con una zona nombrada, que además sobrevive al cambio de hora de primavera y otoño.

¿Por qué no se actualiza el calendario al que me suscribí?

O se importó en lugar de suscribirse — una importación es una copia única que ya no cambia nunca — o el calendario simplemente aún no ha vuelto a consultar. Google y Outlook lo hacen en su propio ritmo, medido en horas; en Apple la suscripción tiene un ajuste de actualización que puedes bajar a cinco minutos.

¿Un archivo ICS puede contener varios eventos?

Sí, tantos como haga falta: eso es exactamente lo que es un calendario exportado. También puede llevar un evento repetido como una única regla en vez de como muchas copias, de modo que una reunión semanal durante un año ocupa unos pocos cientos de bytes.

¿Por qué mi invitación creó una cita duplicada?

Porque la actualización se envió con un identificador distinto, y el calendario que la recibió la tomó por una cita nueva en lugar de por un cambio en la que ya tenía. Mantener ese identificador estable en confirmaciones, recordatorios y cambios es lo que hace que una actualización sustituya en vez de duplicar.

¿Qué pasa con las reuniones periódicas al pasar el ICS a CSV?

Salen como una sola fila. La conversión lee los eventos y no despliega la regla de repetición, así que una reunión semanal de todo un año ocupa una línea y no cincuenta y dos. Si necesitas cada ocurrencia por separado, hay que generarla desde el propio calendario.