gpt4 book ai didi

javascript - 将 Applescript 列表作为 Indesign 数组传递给 javascript ExtendScript

转载 作者:行者123 更新时间:2023-12-03 09:28:12 24 4
gpt4 key购买 nike

背景

我有大量 Applescripts(AS),设计人员可以将其与 InDesign 一起使用,帮助处理生产工作流程。 AS 可以完成大量的操作系统交互,而 JavaScript 无法完成,因此放弃 AS 是不可能的。

由于限制,我几乎无法安装任何东西。我无法更新任何内容。脚本编辑器和 ExtendScript 工具包是我必须使用的工具。

运行环境:操作系统 X 10.8.5 &Adobe CS6

工作原理

用户首选项作为“属性”保存在本地 Applescript 中,保存在用户的文档文件夹中。

    ###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 仍然将其视为字符串而不是数组。

有什么想法我需要做什么或做错了吗?我希望它很简单,如果我得到答案,我会觉得很愚蠢......

最佳答案

很高兴您有一些可行的东西,但如果您要将文本传递给 ExtendScript,为什么不在 AS 端将其格式化为 ExtendScript 友好的,例如 ['firstvalue', 'secondvalue', 'thirdvalue"'] - -但这将是 AS 中的一个字符串,例如

--in AS:
"['firstvalue', 'secondvalue', 'thirdvalue"']"

然后,在 ExtendScript 中,如果它位于变量中,例如 myData,您可以执行以下操作(就像我刚刚在 ExtendScript Toolkit 中所做的那样):

//in JS:
myArray = eval(myData);

我知道在 Web 工作中使用 eval() 是邪恶的,但对于 ExtendScript 的东西来说,它可能非常有用。

关于javascript - 将 Applescript 列表作为 Indesign 数组传递给 javascript ExtendScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com