AppleScript能否在特定账户创建日历?macOS Calendar 10.0 API疑问
在特定账户中创建日历的AppleScript方案(High Sierra)
嘿,我刚好踩过这个坑——你完全没漏看内容,Calendar 10.0(High Sierra)的原生AppleScript字典确实没有直接指定账户创建日历的显式API,默认创建操作只会落到「我的Mac」账户里。不过别灰心,有个社区摸索出来的间接方法能实现你要的功能,原理是利用账户本身作为日历的容器对象。
具体实现步骤&代码示例
定位目标账户
首先你需要通过账户名称找到对应的容器对象,Calendar里的账户名称可以在「日历偏好设置」→「账户」面板里查看。示例代码如下:tell application "Calendar" -- 把这里的"iCloud"替换成你的目标账户名称(比如CalDAV账户名) set targetAccount to first account whose name is "iCloud" -- 在目标账户下创建新日历,可自定义名称、颜色等属性 set newCalendar to make new calendar at targetAccount with properties {name:"我的专属日历", color:orange} end tell关键注意点
- 账户名称必须完全匹配,大小写、空格都不能错,不确定的话可以先跑这段代码列出所有账户:
tell application "Calendar" to get name of every account - 部分CalDAV或企业账户可能有服务器端权限限制,需要确保你的账户拥有创建日历的权限
- 如果创建失败,先检查目标账户是否在Calendar里正常同步,有没有报错提示
- 账户名称必须完全匹配,大小写、空格都不能错,不确定的话可以先跑这段代码列出所有账户:
为什么字典里没显示这个方法?
High Sierra时期的Calendar AppleScript接口确实比较受限,很多账户相关的操作是通过container这个隐式属性支持的,官方文档当时并没有明确标注这个用法,但实际测试下来是稳定有效的。如果这个方法对你不管用,大概率是账户本身的权限或同步问题,而不是脚本的问题。
内容的提问来源于stack exchange,提问作者A Bowler Cat
相关产品推荐
相关产品推荐

