渋谷ほととぎす通信

新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。※あくまで個人ブログであり所属組織とは関係ありません

activeDocument.exportDocumentの指定パスは存在しないとバージョン不具合を疑わせるエラーが出力される


僕の場合、必要に迫られないとPhotoshopでJSXを書くことはありません。
そして大抵必要に迫られた時はJSXのことを完全に忘れています。


どの言語にも当てはまりますが過去に書いたソースを引っ張り出して思い出しながら書いていく事になります。
ただし時間の経過と記憶からトラブルに出会う時があります。


今回は以下のような。

f:id:esakun:20200629091741p:plain:w450


エラー 8800: Photoshop の一般エラーが発生しました。 この機能は、このバージョンの Photoshop で使用できない可能性があります。

記憶が曖昧な時にこのようなエラーが出たら、あれ、Photohopのバージョン上げすぎたかな...?
と、戸惑ってしまいました。

公式リファレンスにAPIの存在を確認する

こちらにPhotoshopの各バージョンにおけるAPIリファレンスが公開されています。

https://www.adobe.com/content/dam/acom/en/devnet/photoshop/pdfs/photoshop-javascript-ref-2020.pdf
僕はPhotoshop2020を使用しているので、こちらのPDFを確認します。

exportDocumentは存在した

f:id:esakun:20200629092802p:plain:w450 特に非推奨、使用禁止的な物は見当たりませんので、使用できると思われます。

存在しないパスを指定するとエラー

結論を書くと、本記事のタイトルの通り挙動から察するに存在しないパスを指定すると失敗します。


失敗したコード

var folderPath = "指定のフォルダパス";
var filePath = folderPath + "img.png";
var file = new File(filePath);
activeDocument.exportDocument(file, ExportType.SAVEFORWEB, pngOpt);

成功したコード

var folderPath = "指定のフォルダパス";

// フォルダを作成する
var tempFolder = new Folder (folderPath);
tempFolder.create();

var filePath = folderPath + "img.png";
var file = new File(filePath);
activeDocument.exportDocument(file, ExportType.SAVEFORWEB, pngOpt);

フォルダを作成してパスを作っておくと成功します。

最後に

どの言語も毎日書いて覚えておくというのは難易度が高く僕は無理です。
事前に正しくコメントアウトを差し込んでおいて、未来の自分、周りのメンバーが迷わない、時間を無駄にしないという事を心がけておきたいなと思いました。


以上。