缺失值错误 运行 一个 AppleScript
Missing Value error running an AppleScript
我写了一点 AppleScript,其中 returns "missing value" 我不知道为什么会这样。该脚本正在执行它应该执行的操作,但在我使用它的应用程序中输出效果不佳。
这个脚本的原理只是接受参数和运行通过参数提供的文件(with "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
在我的测试中,您必须将传递的变量强制转换为字符串。
osascript open_video.scpt '~/Path/To/File/File.mp3'
使用这样的脚本:
on run argv
tell application "VLC"
activate
open (argv as string)
end tell
end run
你确定你在最后一行的末尾有一个换行符吗?对我来说,当我的脚本在脚本的最后一个字符处突然结束,而不是在末尾有一个换行符时,我遇到了这个错误。
据我所知,这不会影响脚本的功能,只会影响它 returns。在我的例子中,我在进行此更改后得到了一些其他输出,但输出似乎只是信息性的。
这个问题是旧问题,但在我添加这个答案之前被一个新答案带到了问题的顶部。
最近发布的答案表明,如果没有结尾的 newline 字符,则可能会导致此问题,而在我测试过的这种情况下,这根本不是真的有和没有结束 newline 字符,并得到完全相同的结果,无论是编译的还是纯文本的 AppleScript 脚本。
您不需要以 newline 字符结尾,这与为什么您的 code 是 returning missing value
.
在 AppleScript 词典中查找 open
命令,它显示如下:
open‹v:打开对象。
open 别名:要打开的文件。
→ 文件
其中 → 表示 returns,因为其中 returns 有关文档的信息,例如它的名字。
在这种情况下,VLC 正在 returning missing value
,这可能是因为 VLC 没有像例如Apple 自己的应用程序。
如果您不想看到 missing value
则在 代码 中添加一个 return ""
它将 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
文件 , 和 return 提示.
我写了一点 AppleScript,其中 returns "missing value" 我不知道为什么会这样。该脚本正在执行它应该执行的操作,但在我使用它的应用程序中输出效果不佳。
这个脚本的原理只是接受参数和运行通过参数提供的文件(with "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
在我的测试中,您必须将传递的变量强制转换为字符串。
osascript open_video.scpt '~/Path/To/File/File.mp3'
使用这样的脚本:
on run argv
tell application "VLC"
activate
open (argv as string)
end tell
end run
你确定你在最后一行的末尾有一个换行符吗?对我来说,当我的脚本在脚本的最后一个字符处突然结束,而不是在末尾有一个换行符时,我遇到了这个错误。
据我所知,这不会影响脚本的功能,只会影响它 returns。在我的例子中,我在进行此更改后得到了一些其他输出,但输出似乎只是信息性的。
这个问题是旧问题,但在我添加这个答案之前被一个新答案带到了问题的顶部。
最近发布的答案表明,如果没有结尾的 newline 字符,则可能会导致此问题,而在我测试过的这种情况下,这根本不是真的有和没有结束 newline 字符,并得到完全相同的结果,无论是编译的还是纯文本的 AppleScript 脚本。
您不需要以 newline 字符结尾,这与为什么您的 code 是 returning missing value
.
在 AppleScript 词典中查找 open
命令,它显示如下:
open‹v:打开对象。
open 别名:要打开的文件。
→ 文件
其中 → 表示 returns,因为其中 returns 有关文档的信息,例如它的名字。
在这种情况下,VLC 正在 returning missing value
,这可能是因为 VLC 没有像例如Apple 自己的应用程序。
如果您不想看到 missing value
则在 代码 中添加一个 return ""
它将 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
文件 , 和 return 提示.