質問: app.activeDocument.fullName; alert(filename); alert(filename.length); ``` こちらのコードの場合は最初に **~/Desktop/waiwai.psd** が表示されます。 その次は **32002** と表示されてしまいます。 私にはどうしてlengthオプションでこのような値が出てしまうのか理解できませんでした。 これの有効な対処方法はあるでしょうか?
回答: pathやfullNameで取れているのが文字列ではなくてFolderオブジェクトやFileオブジェクトだからです。 Fileクラスにおいてはlengthはファイルサイズ(バイト)を表し、Folderクラスにはそれがないのでundefinedとなっています。 クラスの詳細は ExtendScript Toolkitで ヘルプ→オブジェクトモデルビューアで表示された左上からFileやFolderを探してください。 今回の場合は ``` var fullFoldername = app.activeDocument.path.fullName; alert(fullFoldername.length); var foldername = app.activeDocument.path.name; alert(foldername.length); var fullFilename = app.activeDocument.fullName.fullName; alert(fullFilename.length); var filename = app.activeDocument.name; alert(filename.length); ``` とすれば求める値が取得できます。 ...だけど app.activeDocument.fullName でファイルオブジェクトが返るのは違和感を覚えますね。 オブジェクトモデルビューアでブラウザを`Adobe Photoshop CS6 Object Library` に切り替えてDocument.fullNameプロパティを調べてみると > > Document.fullName (Read Only) > > Data Type: File > > > なので、仕様通りですが。 追記 == ちなみに、alertだとフォルダ名やファイル名がとれていてそれらが文字列っぽく見えたのは、そのクラスの文字列表現がnameかfullNameを返すようにつくられているからです。 誤解を恐れず簡単に言ってしまえば、toString()してとれる値が表示されていただけです。