运行AppleScript

时间:2015-12-08 15:10:57

标签: macos applescript

我写了一个AppleScript,它返回"缺少值"我不知道为什么会这样。脚本正在做它应该做的事情,但是在我使用它的应用程序中输出并不好。

此脚本的原理只是获取参数并运行通过参数提供的文件(使用" VLC Media Player")。

因此,例如,使用osascript open_video.scpt ~/Path/To/File/File.mp3

on run argv
    tell application "VLC" 
        activate 
        open argv
    end tell
end run 

3 个答案:

答案 0 :(得分:1)

这个问题很旧,但是在我添加此答案之前,它以新答案出现在问题的顶部。

最近发布的答案表明,如果没有结尾的 newline 字符,则可能导致此问题,并且在这种情况下,这完全不正确,因为我已经测试了是否使用使用已编译的和纯文本的AppleScript脚本结尾 newline 字符并获得完全相同的结果。

您不需要结尾的 newline 字符,并且与您的 code 返回missing value的原因无关。

在AppleScript词典中查找open 命令,它显示以下内容:

打开打开 v :打开一个对象。
打开别名:要打开的文件。
→文档

其中表示退货,因为其中返回有关文档的信息,例如它的名字。

在这种情况下,VLC会返回missing value,这可能是因为VLC并未将AppleScript集成得很好。苹果自己的应用。

如果您不想看到missing value,请在 code 中添加return "",它将返回空白行。或者您可以添加例如return "VLC is now playing: & (argv as string);但是,由于VLC的AppleScript集成不是最好的,因此我只选择return "",因为VLC不能很好地响应标准的AppleScript错误处理。同样,通过测试错误处理代码可以与其他应用程序一起使用,但不适用于VLC。

或者只是直接使用命令行open 命令,例如:

open "/Applications/VLC.app" "/path/to/media_file.ext"

打开 VLC应用程序,启动 media_file.ext 文件,然后返回 提示

答案 1 :(得分:0)

在我的测试中,你必须将传递的变量强制转换为字符串。

osascript open_video.scpt '~/Path/To/File/File.mp3'

使用脚本:

on run argv
    tell application "VLC" 
        activate 
        open (argv as string)
    end tell
end run 

答案 2 :(得分:0)

您确定最后一行的末尾有换行符吗?对我来说,当我的脚本突然在脚本的最后一个字符而不是换行符结尾时出现了此错误。

AFAIK这不会影响脚本的功能,只会影响脚本返回的内容。就我而言,进行此更改后,我得到了一些其他输出,但是输出似乎只是提供信息。