Adobe Illustrator JavaScript - 循环将数据集应用于每个打开的文档

Adobe Illustrator JavaScript - Applying a dataset to each open document in a loop

我编写了一个简单的脚本来在 Adob​​e Illustrator 中打开两个文档(文件 -> 脚本)并对这些文档应用一些命令。

脚本的目的;如果没有在 Illustrator 中打开文档,脚本将:

  1. 打开所需文件。
  2. 将 XML 变量库加载到这些文档中。
  3. 显示该库中的数据集(只有一个数据集)。
  4. 将文件保存在指定位置。
  5. 关闭文件。

脚本:

try
{
    var doc_1 = open(File("C:/file1.ai"));
    var doc_2 = open(File("C:/file2.ai"));

    var sourceDoc;
    var targetFile; 

    var options = new IllustratorSaveOptions();

    for (var i = 0; i < app.documents.length; i++ ) 
    {
        sourceDoc = app.documents[i];

        sourceDoc.importVariables(new File("C:/variables.xml"));

        sourceDoc.dataSets[0].display();

        targetFile = new File("C:/output" + sourceDoc.name + '.ai');

        sourceDoc.saveAs( targetFile, options );

        sourceDoc.close();
    }
}
catch(err)
{
    alert(err);
}

此代码仅适用于上次打开的文件 (file2.ai)。 file1.ai 从未被触及,几乎就像没有循环一样。

可能是什么原因造成的?

关闭循环中的第一个文件时,您刚刚将 app.documents[1] 移动到 app.documents[0]

你想要 top 向后循环

试试你的循环
for (var i = app.documents.length; i >0 ; i-- )