我真的很难理解如何使用 Yosemite 中对 Javascript 自动化的新支持来与 iCal 交互。我对 OOP 没有太多经验,所以这可能是我的问题所在。
有人可以帮我提供将新事件添加到指定日历的代码吗?我可能可以从那里对其进行逆向工程以了解如何使用它。
谢谢
更新
这是我正在尝试的代码..
// -- perform adding to iCal
// -- select "Test" calendar
theCalendar = iCal.calendars.Test;
events = theCalendar.events;
// -- load in the events
stringifiedData = Safari.doJavaScript("localStorage.getItem('theEvents');", {
in: Safari.windows[0].tabs[0]})
// -- parse data back to js object
theEvents = JSON.parse(stringifiedData);
// -- loop through events
for (var key in theEvents) {
var obj = theEvents[key];
// -- set vars
theDate = obj['date'];
theDescription = obj['description'];
theSummary = obj['summary'];
theLocation = obj['location'];
theStartTime = theDate + " " + obj['startTime'];
theEndTime = theDate + " " + obj['endTime'];
// -- create event object
theEvent = iCal.Event({
description: theDescription,
summary: theSummary,
location: theLocation,
startDate: theStartTime,
endDate: theEndTime
});
// -- get the last index event
last = events.length;
// -- insert it into iCal
events.push(theEvent);
}
我收到的错误..
Error on line 68: TypeError: undefined is not an object (evaluating 'events.push(theEvent)')
更新
我弄清楚了这个问题。我的日期格式不正确..它们只是字符串。所以我确保将它们变成日期对象,并且我能够使用成功插入
events[last] = theEvent;