Applescript记录不能强制应用于应用程序的预定义记录类型

时间:2016-10-28 06:25:59

标签: applescript

例如,我正在尝试使用BetterZip在applescript自动化中提取文件

字典显示unarchive命令的语法:

命令语法
unarchive file or list of file ¬ with preset text ¬ with options unarchive options

其中unarchive options是具有一组属性的预定义记录类型:

unarchive options (record) PROPERTIES Property Access Type --------------------------------- clean archive get/set boolean create extra folder get/set create extra folder (enum) destination get/set file or destination folder password get/set text trash archive get/set boolean

在我的代码中,我想使用BetterZip提取文件

tell application "BetterZip"
    unarchive "/path/to/zipfile" with options {clean archive:false, destination:original, create extra folder:never, trash archive:false}
end tell

脚本调试器6 中,错误为unable to coerce the data to the desired type {errAECoerionFail:-1700}
状态栏显示Stopped {Error: Can't make {clean archive:false, destination:original, create extra folder:never, trash archive:false} type unarchive options

那么如何将unarchive options类型的记录传递给命令?

更新

我已经找到了问题的根源,但我仍然无法找到解决方案。

可以通过BetterZip的命令unarchive options检索get extraction preset with name "preset name",返回值为record,例如Script Debugger中的一个,以AEPrint格式显示为{{1} }。

如果我使用相同的键和值创建记录,则AEPrint为{ 'uoDs':'Orig', 'uoEF':'efNv' },注意{ 'aoDs':'Orig', 'uoEF':'efNv' }的内部令牌不同。 (一个是destination,另一个是uoDs)。

此外,如果我合并记录:aoDs,则返回值似乎有重复的键而不是合并它们:{destination:original} & (get extraction preset with name "ExtractHere")而AEPrint是{destination:original, destination:original, create extra folder:never}

所以我认为这就是为什么unarchive命令不会接受类似{ 'aoDs':'Orig', 'uoDs':'Orig', 'uoEF':'efNv' }的参数,因为键名下面不匹配。

但是如何创建一个匹配正确类型的?

1 个答案:

答案 0 :(得分:0)

当我想在AppleScript中解压缩文件时,我只使用“do shell script”和“unzip”命令,例如。

do shell script "/usr/bin/unzip \"/path/to/zipfile\" -d \"/path/to/output/location\""