0

Je ne connais pas encore les scripts JXA, mais j'essaie de résoudre certains anciens scripts actuellement en cours d'utilisation. Ils parcourent un document InDesign et créent plusieurs PDF basés dessus. Auparavant, ils étaient stockés dans un dossier appelé "~/PDFExports". Cependant, cela ne fonctionne pas avec 10.10.Déplacement de fichiers créés avec JXA

Si je change le code pour simplement placer les PDF dans "~ /", cela fonctionne très bien. De là, je voudrais déplacer les fichiers vers "~/PDFExports", mais je n'arrive pas à trouver une réponse sur la façon de le faire. J'ai vu des choses à propos de faire des appels à ObjC, ou d'appeler Application ('Finder'), mais aucun travail - ils retournent tous les deux non définis.

Ai-je juste manqué quelque chose de basique ici, ou est-ce vraiment si difficile de simplement déplacer un fichier avec JXA?

EDIT: Une certaine syntaxe pour la façon dont je crée le dossier en question et comment j'essaie de travailler avec 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"); 
} 

Répondre

1

Les applications Adobe incluent depuis longtemps leur propre interpréteur JS intégré, leur API JS et leur extension de nom de fichier .jsx. Cela n'a rien à voir avec JXA et n'est pas compatible avec cela.

documentation JSX InDesign:

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

(BTW, je voudrais aussi fortement déconseiller l'utilisation du JXA pour l'automatisation Adobe app car il a beaucoup de disparus/caractéristiques cassés et des problèmes de compatibilité des applications, et vraiment est pas fait pour le travail de production)

Voici le lien vers le forum Scripting InDesign d'Adobe, qui est le meilleur endroit pour obtenir de l'aide JSX:.

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

+0

Aha! Ça explique beaucoup. Merci! –

0

Est-ce que le dossier est manquant? Votre référence à l'objet de dossier peut-elle être incorrecte? Toute syntaxe à afficher?

+0

Le dossier est présent et Aimez-le au début de chaque boucle si ce n'est pas le cas. Et je pourrais référencer Finder incorrectement, je ne suis pas sûr. J'ai édité ma publication initiale pour montrer le code que j'ai utilisé pour créer le dossier et accéder au Finder. –

0

Vous pouvez utiliser Cocoa pour créer le dossier

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

et de déplacer un fichier

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

Tenir compte que destinationLocation doit être le chemin complet, y compris le nom du fichier
et les deux sourceFile et destinationLocation doit être des objets NSString comme exportFolder

+0

Non. Les scripts OP utilisent l'interpréteur JS intégré d'InDesign, pas JXA. Le PO semble être confus au sujet de la différence. L'OP a besoin de télécharger le Guide de script InDesign d'Adobe, auquel je suis déjà connecté, et d'apprendre cela. (Indice: l'API JS d'ID inclut une commande 'doScript' qui peut être utilisée pour exécuter du code AppleScript.) – foo

+0

Je n'ai pas réalisé la différence non plus, merci – vadian

+0

Ouais, il n'était pas immédiatement évident que l'OP avait confondu les deux, en particulier si vous n'êtes pas familier avec le support JS d'Adobe. L'indice était cependant dans le libellé: "scripts plus anciens" (c'est-à-dire avant 10.10) signifie que _had_ devait être JSX, puisque JXA n'apparaissait que dans 10.10. (De plus, comme je l'ai dit, l'utilisation de JXA pour l'automatisation de Adobe serait une recette pour la douleur en elle-même. – foo