0

我是 JXA 脚本的新手,但我正在尝试对一些当前在工作中使用的旧脚本进行故障排除。他们循环浏览一个 InDesign 文档并基于它创建几个 PDF。以前,它们将存储在名为“~/PDFExports”的文件夹中。但是,这不适用于 10.10。

如果我将代码更改为仅将 PDF 放在“~/”中,它就可以正常工作。从那里,我想将文件移动到“~/PDFExports”,但我似乎找不到如何做到这一点的答案。我见过有关调用 ObjC 或调用 Application('Finder') 的事情,但两者都不起作用 - 它们都返回未定义。

我只是在这里遗漏了一些基本的东西,还是用 JXA 简单地移动文件真的这么难?

编辑:关于我如何创建有问题的文件夹以及我如何尝试使用 Finder 的一些语法。

//This is called in the Main function of the script, on first run.

var exportFolder = new Folder(exportPath);
if(!exportFolder.exists) {
    exportFolder.create();
}

//This is called right after the PDF is created. file is a reference to the 
actual PDF file, and destination is a file path string.

function MoveFile(file,destination){
   var Finder = Application("Finder");

   Application('Finder').move(sourceFile, { to: destinationFolder });

   alert("File moved");
}
4

3 回答 3

1

Adobe 应用程序长期以来一直包含自己的嵌入式 JS 解释器、JS API 和.jsx文件扩展名。它与 JXA 无关,也不兼容。

InDesign 的 JSX 文档:

http://www.adobe.com/devnet/indesign/documentation.html#idscripting

(顺便说一句,我也强烈建议不要将 JXA 用于 Adob​​e 应用程序自动化,因为它有很多缺失/损坏的功能和应用程序兼容性问题,并且确实不适合生产工作。)

这是 Adob​​e 的 InDesign 脚本论坛的链接,这是获得 JSX 帮助的最佳地点:

https://forums.adobe.com/community/indesign/indesign_scripting

于 2015-08-08T12:05:54.087 回答
1

您可以使用 Cocoa 创建文件夹

var exportFolder = $.NSHomeDirectory().stringByAppendingPathComponent("PDFExports")
var fileManager = $.NSFileManager.defaultManager
var folderExists = fileManager.fileExistsAtPath(exportFolder)
if (!folderExists) {
    fileManager.createDirectoryAtPathWithIntermediateDirectoriesAttributesError(exportFolder, false, $(), $())
}

并移动文件

var success = fileManager.moveItemAtPathToPathError(sourceFile, destinationLocation, $());
if (success) alert("File moved");

考虑destinationLocation必须是完整路径,包括文件名
和两者sourceFile,并且destinationLocation必须是 NSString 对象,如exportFolder

于 2015-08-08T14:17:05.527 回答
0

会不会是文件夹不见了?您对文件夹对象的引用可能无效吗?有什么语法可以显示吗?

于 2015-07-30T08:30:00.317 回答