【发布时间】:2015-10-14 08:51:59
【问题描述】:
背景
我有大量的 Applescripts(AS),设计师将这些 Applescripts(AS) 与 InDesign 一起使用,以帮助处理生产工作流程。有大量的操作系统交互是 AS 做的,而 JavaScript 做不到,所以离开 AS 是不可能的。
由于限制,我几乎无法安装任何东西。 我无法更新任何内容。脚本编辑器和 ExtendScript Tool Kit 是我必须使用的。
运行环境: OS X 10.8.5 & Adobe CS6
工作原理
用户首选项保存为本地 Applescripts 中的属性,保存在用户的文档文件夹中。
###property grabber.scpt
set mypath to path to documents folder
set mypropertiesfile to ((mypath & "myproperties.scpt") as string)
set thePropertyScript to load script file mypropertiesfile
set designerinitials to (designerinitials of thePropertyScript) ETC...
一些属性是 AS 列表。
为什么需要 JS?
我正在制作调色板,我更愿意使用 ScriptUI 而不是像这样在 AS 中完成所有操作:
set dlgRef to make dialog with properties {name:"User Settings", can cancel:true, label:"Dialog Label"}
AS 交给 JS 的字符串是这样的:
{"myname",{firstvalue:"test", secondvalue:"val2", thirdvalue: "val3"},{firstvalue:"test2", secondvalue:"val2", thirdvalue: "val3"}}
这些不是列表,而是文本...
JS
myAppleScript = new File("valid_path_to/property grabber.scpt");
var myreturn = app.doScript(myAppleScript, ScriptLanguage.applescriptLanguage);
var myname = myreturn[0];
var firstlist = myreturn[1];
var secondlist = myreturn[2];
ExtendScript 数据浏览器显示:
firstlist = {firstvalue:"test", secondvalue:"val2", thirdvalue: "val3"}
这不是一个数组...
我尝试过使用https://github.com/KAYLukas/applescript-json 对列表进行 json 编码,但结果相同。
firstlist = [{firstvalue:"test", secondvalue:"val2", thirdvalue: "val3"}]
我也让它变得更简单了
firstlist = {"test","val2","val3"}
仍然 JS 将其视为字符串而不是数组。
有什么想法我需要做什么或做错了吗?我希望它很简单,如果我得到答案,我会觉得很愚蠢......
【问题讨论】:
-
eval 是答案,除非我想要实际的 json
标签: javascript json applescript adobe-indesign extendscript