如何在传递另一个applescript时保留'me'的值

问题描述 投票:0回答:1

我有 2 个 applescripts...一个称为“App”,一个称为“Shell”。我希望能够在“Shell”脚本中引用“App”脚本的名称。到目前为止我发现的是,如果“Shell”脚本读取其中包含 me 的任何内容,它似乎引用了自身,而不是“App”脚本。

-- App.scpt

set appName to name of me


--Shell.scpt

tell application "System Events"
    
    set appScript to (load script file (POSIX file "/Path/To/App.scpt"))
    run appScript
    
    return appName
    
end tell

我尝试了上面所写内容的不同替代方案,结果如错误、缺失值或“Shell”,这是不正确的......任何帮助将不胜感激!

file scripting applescript
1个回答
0
投票

经过深思熟虑,我决定走以下路线,并添加额外的“path to me”命令以供参考...

-- App.scpt

try
    set appName to appName
    set appPath to appPath
on error
    set appName to name of me
    set appPath to path to me
end try


--Shell.scpt

tell application "System Events"
    set appPath to (posix file "/Path/To/App.scpt" as alias)
    set appName to name of appPath
    run (load script file appPath)
end tell

由于 Shell.scpt 已经知道 App.scpt 的路径(因为它需要加载它),因此我采用了简单的选项来引用此名称和路径。

App.scpt 中的“on error”语句通过使用 Shell.scpt 中的详细信息(如果可用)来工作,如果它们不可用,则恢复引用“me”命令。

在 Shell.scpt 中,我将所有内容都包装在tell块中,因为需要“系统事件”来获取文件名,而且这样看起来也更整洁......

我可以使用我概述的内容向此 Shell.scpt 添加许多不同的 App.scpt 示例,现在一切都应该按预期工作,变量按其应有的方式返回,并且“me”命令被正确引用。

© www.soinside.com 2019 - 2024. All rights reserved.