【问题标题】:Can I control/script InDesign using Electron app/JavaScript?我可以使用 Electron 应用程序/JavaScript 控制/编写 InDesign 脚本吗?
【发布时间】:2019-11-12 23:06:39
【问题描述】:

目前正在研究 Electron,最终目标是控制其他应用(如 InDesign)中的动作/脚本。

目前,我的工作流程的一部分使用 Filemaker 来触发控制操作/更改 InDesign 文档的 applecript(然后通过 AppleScript 将结果反馈给 filemaker)。

Electron 是否也能实现类似的功能 - 即在 Electron 中触发一个事件(通过用户操作或监视文件夹等),然后使用 electron/JavaScript “告诉 InDesign”执行一些操作并获得反馈以触发更多操作电子?

【问题讨论】:

    标签: javascript automation electron adobe-indesign


    【解决方案1】:

    我没有使用 Electron,但我们使用 nwjs 进行了一些开发,这很相似。我们设置它的方式是让 nwjs 执行 VBS 文件(在 Windows 上可以使用命令行可执行 CScript 或 WScript。我不确定 MAC 或 Linux)。 VBS 文件要么包含直接在 InDesign 中运行的脚本,要么使用 vbs DoScript 命令来运行外部 jsx 文件,甚至是它们的组合。如果没有 ExtendScript 或 VBS,外部 JSX 文件显然无法直接在 InDesign 中运行。

    总结:NWJS -> VBS (-> JSX) -> InDesign。

    捕获响应有点麻烦,因为没有直接的方法(我知道)来捕获 jsx 在 InDesign 中运行完成的时间。但是我们使用了两种不同的方法——一种是在外部数据库中捕获响应(并让 NWJS 读取数据库,直到脚本完成),另一种是在 TEMP 位置简单地创建一个文件并让 NWJS 等待它出现。不幸的是,这些都不是异步的,所以如果你需要更动态的东西,它需要更多的工作。

    【讨论】:

    • 谢谢。听起来类似于我们目前使用 Applescript 的方法。 Applescript 具有跨多个应用程序执行操作并从每个应用程序获取响应/值并在它们之间传递的优势。我只是想让我们更加独立于平台 ;-) 并且希望能让 Electron js 与 InDesign js 对话(没有依赖于系统的 VB 或 Applescript 的中间/中介)...
    • 我想到了另一种方式,就是平台无关的。您可以使用 ExtendScript 并在外部调用它。 MAC 和 WIN 都支持这一点。见*.com/questions/37320580/…。您需要做的就是将“#target InDesign-10(或您正在运行的任何版本)放在脚本的顶部,以便它知道您将在 InDesign 中运行它。总而言之:Electron 将调用命令行或使用 -run 参数和您的脚本执行 ExtendScript 的终端命令。不幸的是,我无法在 MAC 上对其进行测试。
    • 谢谢 - 我明天试试,告诉你我的进展情况
    • 呸 - 没用 - 在扩展脚本工具包应用程序中打开脚本......将尝试其他一些变化......(这些链接抱怨同样的问题,然后指向使用 applescript/VB脚本启动/执行告诉应用程序部分
    • 需要了解的几件事:1) 确保您的脚本名称(如果有空格)包含在引号中。 2) #target 之后的 InDesign 版本应该是正确的。我使用了这个脚本(我在 WIN7 和 CC2014 上):#target InDesign-10 app.doScript(function(){alert('ok')});并用这一行调用它:“C:\Program Files(X86)\Adobe\Adobe Utilities\ExtendScript\ExtendScript.exe”-运行“C:\temp\my script.jsx”。这在没有打开 Extendscript UI 的情况下工作。