不可視レイヤーのみ削除する

■プログラム説明(ソースコード説明)
 レイヤーオブジェクトはlayers配列に入っているので変数layerObjに入れておきます。配列の長さがレイヤー数になるのでlengthで長さを取得し、その分だけ繰り返し処理を行います。visibleプロパティを読み出し変数flagに入れます。次にvisibleプロパティにtrueを入れてレイヤーを可視状態にします。変数flagがfalseだったらremove()でレイヤーを削除します。

■ソースコード
layerObj = activeDocument.layers;
for (i=0; i<layerObj.length; i++)
{
flag = layerObj[i].visible;
layerObj[i].visible = true;
if (!flag) layerObj[i].remove();
}


■使い方
1:不可視レイヤーを削除したいドキュメントをアクティブ(最前面)にします。
2:ファイルメニューからスクリプトを実行します。
3:不可視レイヤーのみ削除されます。


■ポイント
 変数flagがfalseかどうかを!(否定演算子)を使って判断しています。if (!flag)とすると変数flagがtrueの場合に以後の処理が行われます。
 ロックされていないレイヤーを削除する場合は以下のようになります。可視状態にしてから削除を行います。

layerObj = activeDocument.layers;
for (i=0; i<layerObj.length; i++)
{
if (layerObj[i].locked) { layerObj[i] = false; layerObj[i].remove(); }
}

■実際のスクリプトをダウンロード(sample.js.zip)