1

在 Javascript for Automation 中,可以创建一个元素对象,然后将其添加到容器中。例如:

    var cal = Application('Calendar')
    var newEvent = cal.Event(
          {    
               summary: todoSummary,
               startDate: new Date(),
               endDate: endDate
          }
    );
    cal.calendars[0].events.push(newEvent);
}

这种工作方法在许多地方都得到了很好的描述和记录,因此 Calendar (iCal) 不需要有自己的方法来执行此操作。

如何从容器(事件)中删除一个对象(事件等),或者至少删除该事件与其日历之间的关系?在 AppleScript 中,人们会写:

delete (every event whose uid is eventID)

所以看起来 JXA 版本会是这样的:

cal.calendars.events.delete.whose({uid: event.uid()})

但是各种尝试只会给我invalid key formsCan't convert types错误。谢谢!

4

1 回答 1

1

事实证明,该delete方法驻留在Application对象本身上,因此,它很简单:

// delete most recent message on first calendar
var ical = Application('Calendar');
var ev = ical.calendars[0].events.last();
ical.delete(ev);

// and specifically for OS X calendar:
ical.reloadCalendars();
于 2016-06-26T19:21:06.083 回答