我在Omnis studio中创建了一个应用程序,我希望用户能够按一个按钮打开Microsoft Excel,然后将其粘贴到剪贴板中。为此,我让我的应用程序调用一个AppleScript应用程序。参见此处:
tell application "Microsoft Excel"
activate
make new workbook
paste special on worksheet active sheet
end tell
但是,每当我的应用程序调用该脚本时,它就会遇到苹果的沙箱问题,表明无法将事件发送到Microsoft Excel。
我在线阅读了一篇文章,为了能够访问Mac OS中的发送事件,您需要具有一个entitlements.plist文件与您的应用程序关联。如何将entitlements.plist文件添加到Applescript应用程序,以便在运行时能够将事件发送到Microsoft Excel?
答案 0 :(得分:0)
如果您不出售该应用程序而仅将其用于自己的应用程序,则最好是停用沙盒。您的应用仍然可以通过右键单击>打开来运行。
如果已经启用了沙箱功能,则必须在应用程序结构中(不是在已编译的应用程序中,而是在源代码中)有一个YOURAPPNAME.entitlements文件,因为必须在该文件中启用沙箱功能。
我不知道Omnis Studio,您可以尝试使用XCode来从头开始支持权利文件-即使您必须使用applescript Objective-c而不是普通applescript。
如果您设法找到该文件,则需要向其添加新的键/值,例如用于寻址Excel的>
key: "com.apple.security.temporary-exception.apple-events"
value (type array):
Item 0 > "com.microsoft.excel"
但是要小心-如果您想留在沙箱中,从OSX 10.14开始,Apple提供了一个名为“安全完整性保护”(SIP)的新安全策略,用户还需要允许您的应用程序使其他应用程序自动化,请检出此线程:"because it is not SIP-protected" - Apple event error in OSX Mojave
要从10.14开始绕过此操作,还必须在info.plist文件中添加新行
key: NSAppleEventsUsageDescription
value: [Some description why you need to use AppleEvents]
我不知道第三方编辑是否会效仿苹果提供的变更速度。