Photoshop 2022 UXP historystates
今回はdocumentのhistorystatesプロパティーについて触れたいと思います。ExtendScriptの頃からヒストリーの取得はできましたがUXPでも標準のAPIから取得できるようになりました。これはdocumentオブジェクトのプロパティーから取得できるオブジェクトで詳しいオブジェクトの内容は公式を参照。なおドキュメントが保持しているヒストリーはArray型のデータになります。オブジェクトの型自体ArrayなのでArray.fromメソッドなど使用しなくともそのままarrayメソッドが使用可能です。
このままforEachで各ヒストリーのデータを取得できます。
id,name,等を保持するオブジェクトが取得できました。もちろんその他のArrayメソッドにも対応しています。
ここまでですと単にプロパティーを取得する例になりますがこれだけでなくアクティブなヒストリーの変更、またはヒストリーブラシの対象のヒストリーの指定等も可能です。現在アクティブなヒストリーはactiveHistoryStateで取得できます簡単ですね。
同じようにヒストリーブラシがアクティブになっているヒストリーも同じように取得できます。
これらのヒストリープロパティーはRead-writeが可能なのでヒストリーオブジェクトを代入することでアクティブなヒストリー、もしくはヒストリーブラシのソースになっているヒストリーの対象を変えてることも可能です。
ヒストリープロパティー以外の配列オブジェクト(guides、layers等)もArray型オブジェクトとして格納されているのでそのままforEach,map,filter等のArrayメソッドが使えるのでExtendScriptの時に比べてかなり便利です。