質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Photoshop

Photoshopとは、アドビシステムズ(株)が開発した画像編集のソフトウェアです。 イラストレーターや印刷業界などで幅広く使われている他、初心者や一般向けの写真編集用に開発されたソフトもあります。 専用に開発されたフィルターやプラグインを追加すると、機能を拡張することができます。

Q&A

解決済

2回答

3263閲覧

特定のフォルダにレイヤー名をつけてPSD別名保存をしたいです(Photoshop/JavaScript)

退会済みユーザー

退会済みユーザー

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Photoshop

Photoshopとは、アドビシステムズ(株)が開発した画像編集のソフトウェアです。 イラストレーターや印刷業界などで幅広く使われている他、初心者や一般向けの写真編集用に開発されたソフトもあります。 専用に開発されたフィルターやプラグインを追加すると、機能を拡張することができます。

1グッド

0クリップ

投稿2019/11/19 04:03

編集2019/11/22 05:03

前提・実現したいこと

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側に起因すると思われるので、解決には至っていませんが一度質問を閉じます。
基本的なことまで丁寧にご指摘、教授していただいた方々には感謝いたします。ありがとうございました。

AkitoshiManabe👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

azuapricot

2019/11/19 04:42

Java と javaScript は全くの別物ですが
退会済みユーザー

退会済みユーザー

2019/11/19 05:20

申し訳ございません。 Javaは消しました。ご指摘ありがとうございます。
guest

回答2

0

もしかしてまだ存在しないフォルダにファイルを保存しようとしてますかね?

js

1var file_path = new Folder ("保存したいフォルダのパス"); 2if(! file_path.exists) file_path.create();

のようにして、フォルダが存在しなかった場合は作るようにしましょう

それから作ろうとしているファイルの名前に
:/¥&%?みたいな文字が含まれていないかもチェック

投稿2019/11/19 14:40

KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/20 02:59

回答いただきありがとうございます! フォルダに既に作成しており、ファイルに余計な記号は入れず数字のみのファイル名にしていました。 お教えいただいた一文を追加したところ、またファイルにロックがかかっているとエラーが出ました。 素人考えでWindows側のせいでは...となっており、その方面で解決の方法を探してみようかと思います。 また、フォルダを作らず、お教えいただいたコードで作成のようにいくつかやり方を変えてみます! 本当に助かります!
guest

0

ベストアンサー

PhotoshopのExtend Scriptは触ったことがありませんが…。

記述いただいたコードを見るに、

JavaScript

1var file_path = activeDocument.path; 2// 中略 3var file_fullname = file_path + "/" + file_name; 4// 中略 5var psd_obj = new File(file_fullname); 6var file_path = new Folder ("保存したいフォルダのパス"); 7// 中略 8activeDocument.saveAs(psd_obj, psd_opt, false, Extension.LOWERCASE); 9

とあるので、保存先がfile_fullname=開いているファイルのままになっていませんか?
file_fullnameが定義されるタイミングではfile_pathはactiveDocument.pathのままになります。
つまりfile_fullnameを定義する前にfile_pathに保存したいフォルダを設定すれば良いと思います。

ちなみにパスの区切りは"/"で良いのでしょうか?Windowsだと""になる気がしますが…
(このあたりはExtend Scriptを知らないので関係なければスルーしてください)

投稿2019/11/19 05:42

Takumiboo

総合スコア2534

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/19 06:08

とても丁寧で親切なご回答ありがとうございます!! ご指摘通り区切りは\でした...とんちんかんなところにも指摘いただきありがとうございます。 編集で修正したコードを反映しました。 走らせると「Windowsエクスプローラーの「プロパティ」コマンドを使って、ファイルのロックを解除してください」と出てきましたが、おそらく保存先の指定まではうまくいったと思います(たぶん)。 このエラーについて何か改善策をお知りになっていましたら、ご教授いただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問