【问题标题】:Missing Value error running an AppleScript运行 AppleScript 时出现缺失值错误
【发布时间】:2015-12-08 15:10:57
【问题描述】:

我编写了一个返回“缺失值”的小 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 

【问题讨论】:

  • 有人能告诉我如何在这个问题上设置赏金>。
  • 也许你当时没有足够的声望点?现在可以添加了吗?

标签: macos applescript


【解决方案1】:

这个问题很老,但是在我添加这个答案之前,一个新的答案把它带到了问题的首位。

最近发布的答案表明,如果没有结束 newline 字符,则可能会导致此问题,而在这种情况下,这根本不是真的,因为我已经测试了有无结束 newline 字符并获得完全相同的结果,无论是编译的还是纯文本 AppleScript 脚本。

你不需要有一个结束 newline 字符,这与你的 code 为什么返回 missing value 无关。

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

    openv:打开一个对象。
open 别名:要打开的文件。
→ 文件

代表 返回,因为它返回有关文档的信息,例如它的名字。

在这种情况下,VLC 将返回 missing value,这可能是因为 VLC 没有集成 AppleScript,例如Apple 自己的应用程序。

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

或者干脆直接使用命令行opencommand,例如:

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

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

【讨论】:

    【解决方案2】:

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

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

    使用这样的脚本:

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

    【讨论】:

    • 所以对我来说这个解决方案不能解决我的问题,同样的输出和播放也不再起作用了。
    【解决方案3】:

    您是否确保在最后一行的末尾有换行符?对我来说,当我的脚本在脚本的最后一个字符处突然结束而不是在末尾有换行符时,我遇到了这个错误。

    AFAIK 这不会影响脚本的功能,只会影响它返回的内容。在我的情况下,我在进行此更改后得到了一些其他输出,但输出似乎只是信息性的。

    【讨论】:

    • 在这种情况下,一个人不需要有一个结束 newline 字符,这与他的 code 为什么返回 @987654321 无关@。详情见我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2017-05-20
    • 2016-09-14
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多