1

使用 Applescript 从 OSX 日历中删除事件显然失败 - 该事件已从数据库中删除,但仍出现在日历应用程序中。

两次删除同一个事件会导致错误(未找到事件),因此很明显,该事件虽然仍然在应用程序中可见,但实际上已被删除。

对事件进行计数的示例,以便人们可以看到它确实被删除了,即使它仍然出现在应用程序中:

tell application "Calendar"
    tell calendar "Personnel"
        set myEventUID to uid of (make new event at end with properties {summary:"Name of my event", allday event:"true"})
        count events
        delete event id myEventUID
        count events
    end tell
end tell

预期结果是在日历应用程序中创建了一个事件,然后将其删除。实际结果(在 OS X Mojave 10.14.4 中,可能还有其他版本)是该事件已创建但未“完全”删除:即使您关闭并重新打开该应用程序或重新加载,它仍会出现在日历应用程序中日历。在脚本编辑器中,此代码示例中包含的两个事件计数是一致的:第二个报告的事件计数更少,这表明它确实被删除了(而您仍然在日历中看到它)。

4

1 回答 1

1

我的代码中缺少的并且可能记录得很差的是日历“响应”“保存”命令。以下代码按预期工作:

tell application "Calendar"
tell calendar "Personnel"
    set myEventUID to uid of (make new event at end with properties {summary:"Name of my event", allday event:"true"})
    delete event id myEventUID
    save
end tell
end tell

...最后你没有得到任何改变,因为一个事件被创建然后被删除。但奇怪的地方(至少对我来说)是,当您创建一个事件时,即使没有“保存”操作,您也会在应用程序中看到它并正确记录。删除的时候,需要“保存”……如果有人能在这里解释一个逻辑,不客气!无论如何,这个解决方案显然有效,所以我希望它可以帮助其他人。

于 2019-09-04T11:38:29.407 回答