在JXA中删除元素和/或元素 - 容器关系(Javascript for Automation)

时间:2016-06-26 19:11:37

标签: javascript macos automation javascript-automation

在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错误。谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明,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();