前提・実現したいこと
ExtendScript Toolkit(java script)でPhotoshop上で使用するスクリプトを作成しています。
開いたPSDデータを編集したのち、開いた場所とは異なるフォルダに別名で保存することが目的です。
・パスで指示したフォルダーに別名保存をする
・別名保存するファイル名はレイヤー名とする
・PSDデータで保存する
この3点を目指し書いているのですが、保存場所の指定の記述が難航しています。
javaどころかプログラミング自体初めてで、これ以上はわからない状態です。
一人では解決できなく、お力をお貸しいただきたく思います。
該当のソースコード
var docName = app. activeDocument. name; //一番上のレイヤー名をファイル名に var file_path = activeDocument.path; var layName = activeDocument.artLayers[1].name; var file_path = activeDocument.path; var file_name = layName; var file_fullname = file_path + "/" + file_name; var psd_obj = new File(file_fullname); ////保存先指定 var file_path = new Folder ("保存したいフォルダのパス"); //psdオプション var psd_opt = new PhotoshopSaveOptions(); psd_opt.alphaChannels = true; psd_opt.annotations = true; psd_opt.embedColorProfile = false; psd_opt.layers = true; psd_opt.spotColors = false; activeDocument.saveAs(psd_obj, psd_opt, false, Extension.LOWERCASE);
修正後のソースコード
var docName = app. activeDocument. name; //一番上のレイヤー名をファイル名に var file_path = activeDocument.path; var layName = activeDocument.artLayers[1].name; var file_path = activeDocument.path; var file_name = layName; var psd_obj = new File(file_fullname); ////保存先指定 var file_path = new Folder ("保存したいフォルダのパス"); var file_fullname = file_path + "¥" + file_name;
試したこと
手動で本当はスクリプトで指定したいフォルダの場所に適当な名前で保存すれば、レイヤー名で別名保存ができます。
なので、保存先をパスで指定しているつもりが、指定ができていないということになっています。
選択ダイアログも考えましたが、レイヤー名をファイル名にしたい前提があるため却下となりました。
コードした修正に走らせると、
>「必要なアクセス権限がないか、他のプログラムでファイルを使用しているため、ファイルがロックされています。Windowsエクスプローラーの「プロパティ」コマンドを使って、ファイルのロックを解除してください。」
となり保存ができません。
とくにロックもかけていなく、また行き詰ってしまいましたが調べてみます。
改善の仕方がわかればお教えいただきたいです。
補足情報(FW/ツールのバージョンなど)
ツール:ExtendScript Toolkit
Photoshop 2019 v20.0.7
Windows10
20191122追記
「Windowsエクスプローラーの「プロパティ」コマンドを使って、ファイルのロックを解除してください」については、PhotoshopかPC側に起因すると思われるので、解決には至っていませんが一度質問を閉じます。
基本的なことまで丁寧にご指摘、教授していただいた方々には感謝いたします。ありがとうございました。
回答2件
あなたの回答
tips
プレビュー