i need to create application which export all iCal events to isc file.Can you advice me how i can to do? With Cocoa Application, Command Line Tool or AppleScript Application?....I am trying to do this with AppleScript Application, using CalendarStore Framework.I'm able to get all events, but how to save thems to ics file??
Here is my code:
- (IBAction)btnSelector:(id)sender {
CalCalendarStore *calendarStore = [CalCalendarStore defaultCalendarStore];
NSDate *startDate=[[NSDate alloc] init];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
startDate=[formatter dateFromString:@"2010-01-01 00:00:00"];
NSDate *endDate=[[NSDate alloc] init];
endDate=[formatter dateFromString:@"2050-01-01 00:00:00"];
NSArray *calendars = [calendarStore calendars];
NSPredicate *allEventsPredicate = [CalCalendarStore eventPredicateWithStartDate:startDate endDate:endDate calendars:[calendarStore calendars]];
NSArray *events = [calendarStore eventsWithPredicate:allEventsPredicate];
for(CalEvent *event in events)
{
//here i must save event to file...
NSLog(@"%@",event);
}
for (CalCalendar *calendar in calendars) {
self.lblNotification.title=[NSString stringWithFormat:@"%@ %@",self.lblNotification.title,calendar.title];
}
}
I solved the problem...now i don't use CalendareStore framework, i just read content of calendars folder:
NSFileManager *fileManager = [[NSFileManager alloc] init];
// /Users/username/Library/Calendars
NSError *err;
NSArray *usersFolder = [fileManager contentsOfDirectoryAtPath:@"/Users" error:&err];
for (NSString *dirElement in usersFolder) {
// NSLog(@"users folder : %@",dirElement);
NSString *userCalendarPath = [NSString stringWithFormat:@"/Users/%@/Library/Calendars",dirElement];
NSArray *contentCalendarDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:userCalendarPath error:nil];
NSArray *calendarFolders = [contentCalendarDirectory filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.calendar'"]];
NSMutableArray *calendarNames= [[NSMutableArray alloc] init];
for(NSString *calendarFolder in calendarFolders)
{
// NSLog(@"calendar folder %@/%@",userCalendarPath,calendarFolder);
NSString * fullCalendarInfoPath = [NSString stringWithFormat:@"%@/%@/Info.plist",userCalendarPath,calendarFolder];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: fullCalendarInfoPath];
NSString * eventsDirectory = [NSString stringWithFormat:@"%@/%@/Events",userCalendarPath,calendarFolder];
NSArray *contentEventsDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:eventsDirectory error:nil];
NSArray *events = [contentEventsDirectory filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.ics'"]];
for(NSString* eventName in events)
{
NSString * eventPath = [[NSString alloc] initWithFormat:@"%@/%@/Events/%@",userCalendarPath,calendarFolder,eventName];
//this array contain all ics paths...
//to read file content:
//NSString *eventContent = [[NSString alloc] initWithContentsOfFile:eventPath encoding:NSUTF8StringEncoding error:nil];
[eventsPath addObject:eventPath];
}
NSString* calendarTitle = [dict objectForKey: @"Title"];
[calendarNames addObject:[NSString stringWithFormat:@"%@ (%lu events)",calendarTitle,[events count]]];
}
if(calendarNames.count>0)
{
NSDictionary *userCalendars = [NSDictionary dictionaryWithObjectsAndKeys:dirElement,@"parent",calendarNames,@"children", nil];
[dataCalendars addObject:userCalendars];
}
}