見出し画像

【Photoshop JavaScript】ファイルやフォルダを取り扱う

「指定のフォルダの中のファイル全部開いて一つのキャンバスに貼り付ける」みたいなことをやりたいとき向けの話。

公式ドキュメントに書いてないんだ

ファイルオブジェクトやフォルダオブジェクトについては、ExtendToolKitと一緒にインストールされてる次のファイルを参照してね♡としか書いてなくて、そのファイルをPCの中から探そうとすると、ない(ない)。

公式じゃ無いけどまとめてくれているところがあったのでここを見ながら頑張ります

フォルダを取得する

var folder1 = Folder.selectDialog("フォルダを選択してください")

これでフォルダを選ばせて作業用のフォルダを取得できるけど、上から一つ一つ開いていかないと行けないタイプのダイアログが出るのでちょっと不便。

var folder_path = prompt("フォルダパスを入力してください","")
var folder2 = new Folder(folder_path)

こっちの方が実際スクリプト使う時に使いやすいけど、「フォルダパス」を理解できない人に渡すのには大変なので場合に応じて。

フォルダに対して可能な操作

var folder_object = Folder.selectDialog("フォルダを選択してください")

・フォルダ名やパスを取得するいろいろ

var localized_folder_name = folder_object.displayName
var folder_name = folder_object.name
var folder_fullpath = folder_object.fsName
var folder_uri = folder_object.fullName

・親フォルダを取得する(Folderオブジェクトが返ってくる)

var parent = folder_object.parent    # ルートフォルダに対して使うとnullが返る

・フォルダの存在確認

var is_exist = folder_object.exists

・フォルダを作る

var new_folder = folder_object.create()

フォルダオブジェクトを作った時に引数に渡したパスが存在しなかった場合、create()で実体を作ることが出来る。成功するとtrueが返ってくる。

・フォルダ内のファイルを取得する

var files = folder_object.getFiles()

引数として検索条件を渡すと、条件に一致するファイルのみを取得することもできる。ワイルドカードとして「?(1文字を表す)」と「*(複数文字を表す)」が使える。

他にもあるけど、良く使うものだけ。

ファイルに対して可能な操作

・ファイルの取得

var file_object = File.openDialog("ファイルを選択して下さい")

var file_path = prompt("ファイルのフルパスを入力してください")
var file_object2 = new File(file_path)

どちらでも。

・ファイル名やパスやらの取得

var localized_file_name = file_object.displayName
var file_name = file_object.name
var file_fullpath = file_object.fsName
var file_uri = file_object.fullName

・存在確認

var is_exists = file_object.exists

・参照先のファイルを変える(罠)

var result = file_object.cangePath( "/new_path" )

changePathっていうメソッドだからパスを変える=移動かなって思ったら、「参照先の」パスを変えるメソッドだった。罠。

・コピー

var result = file_object.copy("/copy/path")

※コピー先のパスはURI形式(windowsでも/区切り)で渡す

・開く

file_object.open("mode")

引数で渡すmodeは、

r=読み取り
w=書き込み(既存の内容は消えて置き換えられる)
e=編集(r+w)
a=追記

から選ぶ。

・テキストファイルの内容を読み込む

var string = file_object.read()

今カーソルがある場所からファイル末尾まで一気に読み込む。

aモードで開いた場合、開いた時点でカーソルがファイル末尾にあるので注意。(それ以外のモードならカーソルは文頭にある)

(ここでいう「カーソル」は概念上のカーソル。テキストエディタで開いた時に「ここ編集すんで」って選ぶとチカチカするやつのことだけど、開いたファイルはあくまでメモリ上に開くだけで目に見える訳じゃないから、「カーソル」ってどこにあるねん、って思いがちだけど、プログラムからの操作に合わせて裏であっち行ったりこっち行ったりしている)

・一行だけ読み込む

var string = file_object.readln()

これやると、カーソルが次の行頭に移動する

・書き込む

file_object.write("string"// 全部書き込む
file_object.writeln("string"// 一行書き込む

・名前を変える

var result = file_object.rename( "newName" )

この記事が気に入ったらサポートをしてみませんか?