如何使用AppleScript迭代Reminders


1

我正在尝试编写一个AppleScript,它只是迭代未完成的提醒并显示名称。下面的代码生成此错误: Reminders got an error: Can’t make name of reminder (reminder id \"x-apple-reminder://838D4BDF-C520-440A-ADF2-B66FD602ADDC\") into type string

我想通过从1迭代到1来弄清楚它是如何工作的 (count of notCompleted);但我想了解为什么下面的代码不起作用。 (事实上​​我希望下面的代码可以工作,这表明我误解了什么类型的对象 notCompleted。)究竟包含在内 notCompleted,究竟是什么类型的 currentReminder

tell application "Reminders"
    set snoozeList to "Snooze"
    set notCompleted to reminders in list snoozeList whose completed is false
    repeat with currentReminder in notCompleted
        display dialog (name of reminder currentReminder)
    end repeat
end tell

Answers:


1

除了两个小项目之外,你的理解似乎是恰当的。就像你已经知道的那样, notCompleted 包含未完成的提醒列表。变量 currentReminder 因此,在重复循环的每次迭代中将包含单个循环 reminder 宾语。因此,首先,您不需要(或者更确切地说,您不应该)使用 reminder 说明者 name of reminder currentReminder。相反,只需使用 name of currentReminder

这并不能完全解决问题 name of currentReminder 以部分取消引用的格式返回(这是我不会在这里进行的,但这是如何在引擎盖下枚举项目的结果)。这意味着要访问实际的文本数据,您必须强制它 text 像这样:

display dialog (name of currentReminder as text)

或使用 get 命令,基本上做同样的事情:

display dialog (get name of currentReminder)

因此,从严格意义上说,你只是做错了,只是AppleScript的怪癖。


就是这样。我没有听说过“as text”或“get”。您能推荐一两个解释AppleScript怪癖的文档吗?
Zack

不是它的怪癖,不,它们是你通过经验习惯的东西。但如果你还没有听说过 as text,您将要从Apple Developer文档开始,了解不同的数据类型,强制等。我会找到你的链接并发布。
CJK
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.