I'm somehow always fiddling with automating calendar events and now I even have to deal with ICS and CSV files!
Some background: I'm acting in an amateur theatre community and also manage their internal communications tool. In this tool, all rehearsals, shows and meetings are presented.
However, my fellow actors and the directors are not that tech-savvy to fill in the calendar by, i.e. exporting ical files from their google calendars and import them.
Instead, they wrap up an excel sheet with all events for the coming season.
And so, here we are with a CSV file.
I've searched through various csv to ics converters, but I haven't found one, that served all my needs. I especially needed to create custom vendor fields, that none of the tools I found supported.
So I created my own.
csv2ics - Convert CSV files into ICS calendars
Convert a CSV file into an ICS calendar.
csv2ics needs to know which columns are mapped to which ICAL properties. This can not be easily specified through CSV headers, so we rely on the header map.
The header map is a comma separated list of strings that specify the matching ICAL-properties for each column. Certain mapping are detected and handled properly (e.g. the parsing of the date fields). If a mapping is unknown, it is simply added as a custom attribute.
These mappings are detected:
Install csv2ics using npm:
npm install -g csv2ics
Run it using
csv2ics <input file.csv> <output file.ics>
Input and output files are optional. If only one file is specified, it is used as an input file. If no file is specified, CSV data is taken from the STDIN.