【问题标题】:Open file using AppleScript in Word 2016在 Word 2016 中使用 AppleScript 打开文件
【发布时间】:2017-11-21 22:29:15
【问题描述】:

以下 Applescript 代码适用于 Word 2008(即打开文档,前提是文档存在)。

如果应用程序尚未运行,则它不适用于 Word 2016。

tell application "Microsoft Word"
    open file "Macintosh HD:Users:username:Stuff.docx"
end tell

Word 2016 会打开一个对话框,提示该文件不存在,然后在以下目录中创建并打开一个文件:

/Users/username/Library/Containers/com.microsoft.Word/Data

该文件的名称在 Finder 中显示如下:

Macintosh HD/Users/username/Stuff.docx

在终端中如下:

~$cintosh HD:Users:edimark:Rien.docx

【问题讨论】:

    标签: ms-word applescript


    【解决方案1】:

    只需添加launchactivate。不过,我无法解释为什么需要这样做。

    tell application "Microsoft Word"
       launch
       open file "Macintosh HD:Users:username:Stuff.docx"
    end tell
    

    activate 会将应用带到最前面; launch 不会。

    【讨论】:

    • 一般来说,AppleScript 要使用应用程序,它必须正在运行。显然,“激活”可确保应用在您尝试使用之前运行。
    • 为什么tell 不够用?此外,无论我是否使用 activate,Word 都会启动 - 如果我不使用它只会把事情搞砸。
    • @JMichaelTX – 查看我对@brandelune 回答的评论。提供一种显式启动应用程序的方法是受欢迎的,但在明显需要启动的情况下强制要求它是一种所谓的高级用户友好语言,不受欢迎。
    【解决方案2】:

    Word 过去只需要一个提示就可以工作并且没有被激活的事实是 Word 的问题,而不是 AppleScript 的问题。

    如前所述,使用启动或激活是 AppleScript 正确向应用程序发送消息的要求。

    【讨论】:

    • 有关于这方面的资料吗? Safari、iTunes、Automator、Instruments、Grab、Terminal、InDesign CS6、InCopy CS6 也可以通过简单的打开脚本启动,无需 launchactivate。 (使用 macOS 10.12 测试。)
    • AppleScript 语言指南,第261 “一个以本地应用程序为目标的tell语句不会导致它启动,如果它尚未运行。例如,脚本可以检查目标应用程序(第100页)对象的运行属性以确定应用程序是否在尝试向它发送任何命令之前运行。如果它没有运行,它将不会被启动。也在这里:developer.apple.com/library/content/documentation/AppleScript/…
    • 下一段: “如果 tell 语句针对本地应用程序并执行任何需要应用程序响应的语句,则 AppleScript 将启动应用程序,如果它是尚未运行。该应用程序以隐藏方式启动,但如果需要,脚本可以向其发送activate 命令将其置于最前面。”
    • 我的错!我一直使用 activate 来确保在定位应用程序时不会出错(以及 try 块)。当您在 Script Debugger 中启动它时,您是否尝试过查看错误?
    • 好吧,我尽可能少地使用 AppleScript,而且我对调试器不熟悉......随着我的问题解决了,我不打算做进一步的研究。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    相关资源
    最近更新 更多