无法使用AppleScript邮件消息参考

问题描述 投票:0回答:1

如果我使用 AppleScript 来获取 Mac Mail 的

selection
,如下所示:

tell application "Mail" to get selection

它返回一个消息引用列表,如下所示:

message id 1 of mailbox "INBOX" of account id "1234" of application "Mail"

但是,如果我将这些引用复制/粘贴回另一个脚本中,则会出现语法错误。

enter image description here

我可以用这种更复杂的方式使用参考:

tell application "Mail" to get first message of mailbox "INBOX" of account id "1234" of application "Mail" whose id is 1

但从概念上讲,为什么第一种方法行不通?这似乎颠覆了拥有参考的目的并使客户端代码变得复杂。

附注我的用例是,我更喜欢使用大量小脚本,这些脚本通过

osascript
运行,并以我更熟悉的语言(例如 Python 或 Ruby)粘合在一起。我开始使用整体 AppleScript 导出邮件的选择,但如果邮件主题(用作文件名的一部分)使用非法字符,则会失败。对我来说,在 AS 中解决这个问题似乎太复杂了,所以我想我应该得到参考,然后用它在 AS 之外自己拼凑主题、收到日期和消息源,但我遇到了这个障碍。然后我陷入了困境,试图在 JXA 中做同样的事情,但最终遇到了另一个问题:osascript 输出中返回的消息源将换行符打印为
\n
。然而,这个问题更容易克服,因为将源代码写入 JXA 中的文件而不是使用 osascript 的输出相当简单。

p.p.s。没有办法搜索 AppleScript-Users 的档案吗?我发现的唯一界面似乎需要按年份和月份盲目地摸索。

applescript macos-mail-app
1个回答
0
投票

这是因为

message id
本身就是属性的名称,因此脚本编辑器假设您是这个意思,因此无法解析代码。你可能认为它足够聪明,能够解决这个问题,但可惜。

您可以通过直接指定消息类别来解决此问题,即:

tell application "Mail"
  get «class mssg» id 1 of mailbox "INBOX" of account id "1234"
end tell

请注意,就脚本编辑器而言,编译脚本会将

«class mssg»
变回
message
,任何后续编辑都将导致其再次无法解析。每次都需要将其替换为
«class mssg»

© www.soinside.com 2019 - 2024. All rights reserved.