Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除JXA(用于自动化的Javascript)中的元素和/或元素容器关系_Javascript_Macos_Automation_Javascript Automation - Fatal编程技术网

删除JXA(用于自动化的Javascript)中的元素和/或元素容器关系

删除JXA(用于自动化的Javascript)中的元素和/或元素容器关系,javascript,macos,automation,javascript-automation,Javascript,Macos,Automation,Javascript Automation,在用于自动化的Javascript中,可以创建元素对象,然后将其添加到容器中。例如: var cal = Application('Calendar') var newEvent = cal.Event( { summary: todoSummary, startDate: new Date(), endDate: endDate }

在用于自动化的Javascript中,可以创建元素对象,然后将其添加到容器中。例如:

    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()})

但是各种尝试只会给我
无效的键形式
或者
无法转换类型
错误。谢谢

事实证明,
delete
方法驻留在
应用程序
对象本身上,因此,它非常简单:

// 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();

您是否发现有时会出现“第48行错误:TypeError:Calendar.delete不是函数。(在“Calendar.delete(recentEvent())”中,“Calendar.delete”是未定义的)“我没有,但我已经几年没有运行此脚本了。感谢您的回答,对于未来的搜索者,我将分享我的修复方法:我试图从.which搜索的结果中删除一个事件。这有时奏效。现在,我从搜索结果中获取事件的Id,并改为按Id删除
ical.delete(ical.calendars[0].events.byId(searchResult[0].Id())。每次都是这样。