Applescript - 返回不同的值作为脚本与应用程序...?

时间:2017-10-10 00:13:21

标签: fonts applescript status

我得到了一些寻找丢失字体的代码。 当它是一个脚本时,它返回“已安装”或“不可用” 当它是一个应用程序时,它返回«constant **** fsIn»或«constant **** fsNA»

我想一个解决方法就是让它寻找fsIn,但我还是想了解这里发生的事情......

tell application id "com.adobe.InDesign"
    tell active document
        set fontStatus to (status of every font)
        repeat with s in fontStatus
            display dialog (s as string)
        end repeat
    end tell
end tell

2 个答案:

答案 0 :(得分:2)

display dialog属于Standard Additions,其范围不同。 尝试将常量设置为Indesign

范围内的变量
tell application id "com.adobe.InDesign"
    tell active document
        set fontStatus to (status of every font)
        repeat with s in fontStatus
            set fontStatusString to s as string
            display dialog fontStatusString
        end repeat
    end tell
end tell

答案 1 :(得分:0)

这是正常的。 Apple事件使用“四字符代码”,而不是人类可读的名称。 当您在脚本编辑器中运行脚本时,AppleScript已经加载了应用程序的术语(因为它需要从源代码编译AS脚本),因此可以使用它将这些代码转换回人类可读的名称。

当您将AS脚本保存为独立应用程序时,它已经编译,因此默认情况下不会加载应用程序的术语。您可以使用条件块:

repeat with aConstantRef in fontStatus
    set theConstant to contents of aConstantRef
    if theConstant is installed then 
        set constantName to "installed"
    else if theConstant is not available then
        set constantName to "not available"
    ...
    else -- catch-all in case you miss any
        set constantName to theConstant as string
    end if
end repeat

或者您可以通过包含run script命令来强制AppleScript在运行时加载应用程序的术语,该命令可编译针对该应用程序的“虚拟”脚本:

run script "tell application id \"com.adobe.InDesign\" to (not available)"

之后,该术语也应该可用于您的主脚本。