ICS

Che cos’è un file ICS?

Il formato di scambio dei calendari. Ogni invito che hai ricevuto è un file di questi.

Che cos’è ICS

ICS è un formato di testo semplice che si apre in qualsiasi editor. Si usa per spostare dati fra programmi.

L’estensione è .ics e il nome per esteso è iCalendar. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.

Da dove viene ICS

Risale al 1998. La specifica è RFC 5545.

A un formato rimasto leggibile così a lungo si può affidare qualcosa che vuoi ritrovare fra dieci anni.

La specifica è pubblica

È pubblicata per intero, quindi la si può implementare partendo dal documento invece che per osservazione: è per questo che il formato compare in così tanti programmi, ed è per questo che file scritti vent’anni fa si aprono ancora. Una specifica pubblicata però non è la stessa cosa di una esente da royalty: dove un formato incapsula un codec, le licenze sui brevetti restano una questione a parte che lo standard non risolve.

Non si butta via niente

ICS conserva il suo contenuto esattamente. Risalvarlo non cambia nulla, quindi puoi aprirlo, modificarlo e risalvarlo quante volte vuoi senza accumulare danni: è questo che ne fa un formato di lavoro e non di consegna.

Che cosa apre ICS

Google Calendar, Apple Calendar e Microsoft Outlook lo leggono, e così fanno quasi tutti i programmi dello stesso tipo.

Quando un file non si apre, il formato è raramente il problema: più spesso è il programma a essere più vecchio di lui. Convertire in qualcosa di più vecchio è la via d’uscita affidabile, ed è a questo che serve il resto di questo sito.

Aprirlo nel browser

Nessun browser lo legge.

È di gran lunga il motivo più comune per convertirlo: non che il formato sia scadente, ma che il posto in cui vuoi mostrare il file non sappia leggerlo.

È un formato di lavoro

ICS è pensato per essere aperto e modificato. Tieni il file in questo formato per tutto il tempo in cui il lavoro va avanti, ed esporta da lì ogni volta che serve una copia finita.

Due file diversi, un’estensione

Un file ICS è o un evento che vi è stato inviato o un calendario a cui siete abbonati, e quasi ogni problema con il formato comincia confondendo i due.

Il primo è l’invito allegato a un’email. Descrive un appuntamento — o una piccola serie — ed è pensato per essere aperto una volta e importato. Il secondo è un feed a un indirizzo web che un’applicazione di calendario interroga ripetutamente: un orario, un calendario di partite, un turno, un calendario di festività. È la stessa struttura di file in entrambi i casi, e la differenza in come viene usato è totale. Un abbonamento che viene scaricato e importato invece diventa una copia congelata che non si aggiorna mai più, l’errore più comune in assoluto.

Cosa c’è dentro il file

Testo semplice, in una struttura abbastanza vecchia da sembrarlo: una proprietà per riga, tutte maiuscole, con un ritorno a capo a 75 caratteri e una convenzione di continuazione che mette uno spazio singolo all’inizio della riga successiva. Ogni evento sta fra i marcatori BEGIN ed END con un inizio, una fine, un riassunto, di solito una descrizione e un luogo, e un identificativo unico.

Quell’identificativo è la parte che si comporta in un modo che nessuno si aspetta. È come un calendario riconosce che un aggiornamento appartiene a un appuntamento esistente invece che a uno nuovo, quindi reinviare un invito con lo stesso identificativo sposta l’originale invece di creare un duplicato. Inviatelo con un identificativo nuovo e ora tutti hanno due riunioni.

I fusi orari, dove va storto quasi tutto

Un evento può registrare il proprio orario in tre modi, e si comportano diversamente. Un orario locale senza fuso significa «le dieci ovunque siate», giusto per un compleanno e sbagliato per una riunione. Un orario in UTC, marcato con una Z finale, è un momento fisso che ogni calendario converte nel proprio fuso. Un orario con un fuso nominato porta un’intera definizione di fuso orario dentro il file così che la conversione regga anche attraverso un cambio dell’ora legale.

Un appuntamento che arriva sfasato di un’ora per alcuni partecipanti e non per altri è quasi sempre questo: un evento scritto come ora locale da un sistema che presumeva tutti fossero nello stesso paese. Un appuntamento che era giusto finché non è cambiata l’ora è lo stesso difetto un livello più giù — è stato registrato uno scostamento fisso dove serviva un fuso nominato.

Eventi ricorrenti e l’elenco delle eccezioni

La ripetizione è descritta da una regola invece che scrivendo ogni occorrenza: ogni secondo martedì, l’ultimo venerdì del mese, ogni giorno feriale fino a una data. È compatto ed è esatto, ed è il motivo per cui un anno di riunioni quotidiane sono poche centinaia di byte.

Ciò che complica è le eccezioni. Un’occorrenza cancellata e una singola riunione spostata a un altro giorno sono entrambe memorizzate come emendamenti alla serie, e le applicazioni differiscono in quanto completamente lo implementino. È per questo che spostare un’istanza di una riunione ricorrente a volte sposta tutte quelle nel calendario di qualcun altro — la regola è sopravvissuta al viaggio e l’eccezione no.

Importare in Google Calendar, Outlook e Calendario Apple

Per un file singolo, tutti e tre fanno la stessa cosa: un’importazione che copia gli eventi una volta. In Google Calendar è sotto Impostazioni, Importa ed esporta; in Outlook è File, Apri ed esporta; su un Mac è File, Importa. Scegliete quale calendario riceve gli eventi prima di confermare, perché separarli dopo è noioso.

Per un feed, usate invece l’opzione di abbonamento e datele l’indirizzo piuttosto che un file scaricato. Google la chiama «Da URL», Apple la chiama abbonamento a calendario, Outlook la chiama «Iscriviti dal web». Il calendario poi riscarica secondo il proprio programma, che Google e Outlook misurano in ore e non permettono di impostare; Apple espone un menu di aggiornamento automatico sull’abbonamento che scende fino a cinque minuti. Un cambiamento alla sorgente non è visibile immediatamente, ed è normale, non rotto.

Generare inviti da un’applicazione

Qualunque sistema che prenota qualcosa — una piattaforma di biglietteria, un modulo di prenotazione, un’iscrizione a un corso — prima o poi deve allegare un ICS così il cliente possa metterlo nel proprio calendario. Tre dettagli separano uno che funziona da uno che genera richieste di assistenza.

Usate un fuso orario nominato invece di un orario locale nudo, o un istante UTC se l’evento ha un momento fisso singolo. Mantenete l’identificativo unico stabile fra la conferma, il promemoria e l’avviso di modifica, così gli aggiornamenti arrivano sull’appuntamento esistente. E allegate il file con il tipo di contenuto corretto — inviato come allegato binario generico, i client di posta lo mostrano come un file da scaricare invece che un invito da accettare.

Leggerne e modificarne uno a mano

È testo, quindi qualunque editor lo apre, e per un singolo evento è spesso il modo più veloce per vedere cosa viene effettivamente detto a un calendario. La convenzione di ritorno a capo è l’unica da rispettare: una riga continuata inizia con uno spazio singolo, e rimuovere quello spazio cambia silenziosamente la proprietà.

Modificare è ragionevole per una correzione rapida — una data sbagliata, un refuso nel titolo, un riassunto da anonimizzare prima di condividere il file. Per qualunque cosa strutturale, e specialmente per le regole di ricorrenza, lasciate che sia un’applicazione di calendario a scriverla. La sintassi della regola è precisa, il modo di fallire è un evento che appare nei giorni sbagliati per un anno, e nessuno se ne accorge finché qualcuno non manca una riunione.

I dati, in un posto solo

Identificativi e provenienza del formato ICS.
Estensione.ics, .ical
Tipo di mediatext/calendar
Prima pubblicazione1998
SpecificaRFC 5545

File ICS: domande frequenti

Come si apre un file ICS?

Fate doppio clic e la vostra applicazione di calendario offre di importare gli eventi. Per vedere prima cosa contiene, apritelo in qualunque editor di testo — è testo semplice. Se è un feed di abbonamento invece di un singolo evento, usate l’opzione di abbonamento del vostro calendario con l’indirizzo web invece di importare il file scaricato.

Perché l’appuntamento è sfasato di un’ora?

L’evento è stato quasi certamente scritto come ora locale senza fuso orario allegato, quindi ogni calendario lo interpreta nel proprio fuso. Gli eventi con un momento fisso dovrebbero essere registrati in UTC o con un fuso orario nominato, che sopravvive anche a un cambio dell’ora legale.

Perché il mio calendario abbonato non si aggiorna?

O è stato importato invece che sottoscritto — un’importazione è una copia una tantum che non cambia mai più — oppure il calendario semplicemente non ha ancora riscaricato. Google e Outlook interrogano secondo il proprio programma, misurato in ore piuttosto che minuti; su Apple l’abbonamento ha un’impostazione di aggiornamento automatico che si può abbassare a cinque minuti.

Qual è la differenza fra ICS e iCal?

ICS è l’estensione di file per il formato iCalendar, definito nella RFC 5545. iCal era il nome dell’applicazione calendario di Apple, ora chiamata semplicemente Calendario. Le persone usano i termini in modo intercambiabile, e il file è lo stesso in entrambi i casi.

Un file ICS può contenere più eventi?

Sì — un file può contenerne qualunque numero, ed è esattamente ciò che è un calendario esportato. Può anche contenere un evento ripetuto come una singola regola invece che come tante copie, quindi una riunione settimanale per un anno occupa solo poche centinaia di byte.

Perché il mio invito ha creato un duplicato?

L’aggiornamento è stato inviato con un identificativo unico diverso, quindi il calendario ricevente lo ha trattato come un nuovo appuntamento invece che come una modifica a quello esistente. Mantenere quell’identificativo stabile fra conferme, promemoria e modifiche è ciò che fa sì che un aggiornamento sostituisca invece di duplicare.