イラストレーターのjavascriptマクロの注意点 | 15g.jp

山程ありますが、その内の一例をご紹介します。

activeDocument.layersで取得できるレイヤーは最上位のレイヤーだけ

サブレイヤーはactiveDocument.layersで取得できません。全てを取得したい場合は再帰処理でlayersのlayersの…と見ていくしか無さそうです。
一番上のレイヤーのサブレイヤーはこんな感じで取得できます。
app.activeDocument.layers[0].layers[0].name

テキストはテキストフレーム

activeDocument.textFramesで全てのテキストを配列で取得できます。Fが大文字になります。
(レイヤーもこれで取得できれば楽なんですが、いい方法はないでしょうか…)
contentsプロパティで内容を取得、変更できます。
alert(activeDocument.textFrames[0].contents); //文字列が表示されます。
activeDocument.textFrames[0].contents = “abcde”; //文字列を”abcde”にします。

可視状態やロックの取得、設定

レイヤーはvisibleプロパティで設定します。
また、親の表示/非表示には影響されません。
activeDocument.layers[0].visible; //trueかfalseが返ります。
activeDocument.layers[0].visible = true; //代入すれば設定できます。

テキストフレームの可視状態ははhiddenで設定します。visibleプロパティでは設定できません。
activeDocument.textFrames[0].hidden = false; //visibleとは逆で、falseで見られるようになります。

ロックはlockedで設定します。trueでロック、falseで解除です。
可視状態でなければロックの設定も解除もできません。親が非表示となっている場合も操作できません。
ロックしていてもjavascriptでオブジェクトの操作は可能です。

activeDocument.textFrames[0].locked = false;
activeDocument.textFrames[0].contents = “abcde”;

テキストフレーム・レイヤーをすべて表示させる場合、カッコ悪いですが以下のようにしています。

エラー処理

必ずしておいたほうがいいです。
ただエラーメッセージはかなりアバウトです。親レイヤーに原因がある場合も多々あります。しっかり確認しましょう。
メッセージは英文で返ってきますが、そんなに難しくはありません。
大体この2パターンです。
modified:変更できない(ロックか可視状態が原因)
outofboundsは配列のインデックスが最大値を超えているか下回っています。