如何在indesign中要求或包含脚本

How to require or include scripts in indesign?

本文关键字:包含 脚本 indesign      更新时间:2023-09-26

如何加载另一个脚本文件并在其上运行方法?

我正在使用InDesign javascript,我不知道如何在同一个脚本中包含多个文件。

有三个选项:import、app.doScript和$. evalfile。我更喜欢$. evalfile。参见app.doScript vs $.evalFile

工作的例子:

C: ' script1.jsx

(function() {
    $.evalFile(new File("/c/script2.jsx"));
    var sFullName = g_script2.combineName("John", "Doe");
    $.writeln(sFullName);
    return "Success";
})();

C: ' script2.jsx

g_script2 = {
    combineName: function(sFirstName, sLastName) {
        return sFirstName + " " + sLastName;
    }
};
如果script2

。jsx不是位于C盘的根目录,修改脚本1为它的真实位置。

解释:

    脚本1创建并执行一个匿名函数以避免污染全局命名空间。如果不这样做,sFullName将是全局的。
  1. 脚本1执行脚本2。
  2. 脚本2创建一个对象并将其存储到全局变量g_script2中。
  3. 脚本1调用脚本2的combineName方法。这里需要注意的是,脚本的所有文件将共享相同的全局名称空间,这就是脚本1访问g_script2的方式。然而,这也意味着函数或变量的两个文件不应该有相同的名称,除非它们被保存在一个全局对象中,就像这个例子一样。
  4. 运行combineName函数,返回字符串
  5. 脚本1打印名称,然后返回"Success"。因为它是堆栈上的最后一个对象,所以它作为脚本结果返回。

ExtendScript提供了包含外部脚本的预处理器指令。该指令将目标文件的内容插入到语句所在位置的当前脚本文件中。因此,在语句之后,您将能够调用任何方法,就像它是当前脚本的方法一样:

#target InDesign;    
// Include other script file that includes a function otherScriptFileMethod
#include "otherScriptFile.jsx"
// Now you can call the method as it was written in this script file
otherScriptFileMethod();