2011-11-05 84 views
1

Iam很难解决这个问题。我已经将一个ICS文件读入AppleScript,我需要解析它。这是我的代码用AppleScript解析日历(ICS)

set calURL to "https://url.to.ics" 
set calenderData to do shell script "curl " & calURL 

数据读取正常,但我需要解析它。我希望脚本读取每个事件的BEGIN:VEVENT和END:VEVENT之间的数据。我不知道如何做到这一点,但有一个foreach循环或什么?

以下是包含我的考试的示例日历。

BEGIN:VCALENDAR 
VERSION:2.0 
X-WR-CALNAME:Eksamener 
X-WR-CALDESC: 
X-APPLE-CALENDAR-COLOR:#CC2B23FF 
BEGIN:VEVENT 
UID:C96EF18C-5D17-4170-8C67-832B7F90B464 
SUMMARY:TK 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111213 
DTEND;VALUE=DATE:20111214 
END:VEVENT 
BEGIN:VEVENT 
UID:BDBE0B4B-FF3D-4245-B23F-F1BF25F65998 
SUMMARY:DB 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111006 
DTEND;VALUE=DATE:20111007 
END:VEVENT 
BEGIN:VEVENT 
UID:21261AF0-FDA7-432B-B513-CC3A9C04393D 
SUMMARY:PG 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111216 
DTEND;VALUE=DATE:20111217 
END:VEVENT 
END:VCALENDAR

这是不相关的学校,我只是想分析数据,以查看我的桌面(GeekTool)上。

回答

0

您需要使用文本项目分隔符。试试这个,看看你是否可以理解它是如何工作的。

set theData to "BEGIN:VCALENDAR 
VERSION:2.0 
X-WR-CALNAME:Eksamener 
X-WR-CALDESC: 
X-APPLE-CALENDAR-COLOR:#CC2B23FF 
BEGIN:VEVENT 
UID:C96EF18C-5D17-4170-8C67-832B7F90B464 
SUMMARY:TK 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111213 
DTEND;VALUE=DATE:20111214 
END:VEVENT 
BEGIN:VEVENT 
UID:BDBE0B4B-FF3D-4245-B23F-F1BF25F65998 
SUMMARY:DB 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111006 
DTEND;VALUE=DATE:20111007 
END:VEVENT 
BEGIN:VEVENT 
UID:21261AF0-FDA7-432B-B513-CC3A9C04393D 
SUMMARY:PG 1100 Eksamen 
SEQUENCE:0 
LOCATION: 
DTSTART;VALUE=DATE:20111216 
DTEND;VALUE=DATE:20111217 
END:VEVENT 
END:VCALENDAR" 

set text item delimiters to "BEGIN:VEVENT" 
set theEvents to text items of theData 
set text item delimiters to "END:VEVENT" 

set allEvents to {} 
repeat with i from 2 to count of theEvents 
    set theEvent to item i of theEvents 
    set trimmedEvent to text item 1 of theEvent 
    set end of allEvents to text 2 thru -2 of trimmedEvent -- you can do something here instead of collecting them in the list 
end repeat 
set text item delimiters to "" 
return allEvents 
+0

我一直在寻找代码,我得到了一些。但是,我应该怎么做才能摆脱每个事件的CREATED:数据,例如?我已经尝试过,但它只是崩溃/或者只给我第一次活动.. 对不起,在这个这样的新手,并感谢您的帮助。对此,我真的非常感激。 –