こんにちは、エンジニアのオオバです。

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

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

今回は以下のような。

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

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

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

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

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

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

リンク
ぼくはPhotoshop2020を使用しているので、こちらのPDFを確認します。

exportDocumentは存在した

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

特に非推奨、使用禁止的な物は見当たりませんので、使用できると思われます。

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

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

失敗したコード

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);  

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

最後に

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

オススメ記事