我有以下AppleScript。
use framework "Foundation"
display dialog "foo"
注意:在此示例中并未实际使用Foundation框架,因为该部分代码与该示例无关。仅此代码已产生错误。在现实生活中,我们显然仅导入一个框架以使用它,duh:-)
运行此命令时,出现无用的错误:
Expected end of line, etc. but found identifier.
macOS脚本编辑器停止的标识符为“对话框”。
当我将代码更改为:
display dialog "foo"
脚本按预期运行。
我有两个问题:
答案 0 :(得分:1)
答案中的谓词已过时。您现在可以使用标准脚本导入框架(自优胜美地以来为AFAIR)。
如果您应用use framework
语句,则必须添加
use scripting additions
能够访问display dialog
答案 1 :(得分:0)
!我基于我的答案的信息已经过时,请参阅我的答案下方的更新。
脚本错误的原因是:
因此,基本上:您不允许我们在常规的AppleScript脚本中使用use
语句。您只能在脚本库中使用 。
为解决此问题,我们创建了一个“脚本库”,它只是另一个AppleScript文件。假设我们将此脚本库称为chewbacca.scpt
。您需要将脚本放置在Mac上的特定位置。 (此位置有一个few options)。在尝试导入脚本库时,AppleScript仅在这些位置中查找。
然后,要使用脚本库,请执行以下操作:
tell script "chewbacca"
display dialog "foo"
end tell
应该可以得到预期的结果。
更新:
在阅读了一些答案并阅读了更多文档之后:
扩展AppleScript的方法是导入一个库,这些库称为osax(或“脚本添加”),因为它们的文件名以.osax
结尾。 OSAX代表“开放脚本架构扩展”。要导入osax,我们在脚本中编写use library
(对此我不是100%肯定)。通过导入osax,我们可以使用该osax中的命令。
AppleScript(该语言)没有用于执行以下操作的命令:用户交互对话框(display dialog
),读写文件,文件系统命令,日期函数以及文本和数学运算。
但是:Apple确实提供了可以提供以下命令的osax:StandardAdditions.osax
,不难看出为什么这是最常用的osax之一。
要导入此osax:
use scripting additions
现在回到我的问题:
我看到AppleScript在某些情况下的行为有所不同:
StandardAdditions.osax
)在情况1中,似乎AppleScript(运行时?)以静默方式自动导入StandardAdditions.osax
。我认为是这种情况,因为我可以使用display dialog
。
在情况2中,AppleScript(运行时)不会自动导入StandardAdditions.osax
。
我可以从理论上解释这种不同的行为:
在情况1中,我怀疑他们想使人们更轻松地开始使用AppleScript,以便他们自动导入大多数人/初学者可能想使用的基本命令。
情况2背后的想法可能是这样的:
“开发人员正在明确导入osax,因此他们可能没有
需要StandardAdditions.osax
,所以我们不要自动导入它。”
我发现在某个地方,总是通过向脚本中添加StandardAdditions.osax
来显式导入use scripting additions
是个好主意。
以后我会遵循这个建议。