从 Catalina 开始,Mac OS 支持对某些文件夹进行隐私控制。例如,如果脚本尝试使用多文件导入读取桌面上的文件,您将看到一个弹出窗口,提示JMP Pro 16.app 想要访问桌面文件夹中的文件。如果您选择确定,则一切正常。但是,如果您选择不允许,MFI 指令将失败而不会出现运行时错误,但稍后可能会失败(因为未返回数据表)。一些示例代码如下:
fileList = Pick File( "Choose Insight File(s)", "~/Downloads", {"csvOnly|csv"}, 1, 0, "", "multiple" );
:
Multiple File Import( ... );
dt = Current Data Table();
allCols = dt << Get Column Names( String );在这种情况下,没有当前数据表,因此 dt 未定义,并且获取列名指令失败并显示以下消息:
Send Expects Scriptable Object in access or evaluation of 'Send' , dt << /*###*/Get Column Names( String ) /*###*/
问题是:确定多文件导入命令无法打开和读取文件的推荐方法是什么?
在弹出窗口中选择“不允许”后,以后就不会再询问该问题,MFI 也会悄悄失败。(请注意,可以随时在“系统偏好设置”、“安全和隐私”、“隐私”、“文件和文件夹”、“JMP Pro 16.app”中更改设置。)
更广泛地说,为什么“选择文件”命令首先允许导航窗口访问桌面上的文件?似乎应该将私人文件夹排除在导航窗口之外。
我还发现这不是 JMP 15 中的问题。因此,尊重文件夹隐私显然是 JMP 16 中添加的功能。(我正在运行 16.2.0。)
你好,
我认为您可能需要联系技术支持(支持@jmp.com ) 使用此查询。
问候,
菲尔
在进一步调查此问题后,我已将此问题报告给 Development。 似乎 macOS 没有提供必要的提示( JMP Pro 16.app 想要访问您的 <> 文件夹中的文件) 对于每个目录。它似乎只对下载目录这样做。 其他目录被完全忽略。 我们的开发团队将继续探索这个问题。
关于在未授予文件夹访问权限时确定 MFI 导入何时可能失败,您可能需要考虑使用以下内容:
mfi = Multiple File Import(
<<SET folder=""></SET>
非常感谢大丽花,感谢您耐心和决心帮助描述这一点。 我期待着未来的 JMP 更新。
我实现了您提供的逻辑,我的脚本现在运行良好且可预测。