■プログラム説明(ソースコード説明)
全てのドキュメントの全てのレイヤー内に特定の文字があるかどうかを調べます。prompt()を使ってユーザーに調べたい文字を入力させます。正規表現文字列も使えます。このため*や.など、そのまま入力しただけでは駄目な文字がいくつかあります。
開かれているドキュメント数はdocuments.lengthになります。この数だけ繰り返して調べます。ドキュメント内にあるレイヤーの総数はactiveDocument.artLayersに入っているので、for()でレイヤーの数だけ繰り返すようにします。次にレイヤーの種類を調べてテキストである場合に、テキスト内容を読み出してmatch()で一致する文字があるかどうかを調べます。
■ソースコード
str = prompt("調べる文字を入れて下さい(正規表現)","今日");
regObj = new RegExp(str,"g");
for (j=0; j<documents.length; j++)
{
layObj = documents[j].artLayers;
for (i=0; i<layObj.length; i++)
{
if (layObj[i].kind == LayerKind.TEXT)
{
txt = layObj[i].textItem.contents;
result = txt.match(regObj);
if (result)
{
alert("ドキュメント名"+documents[j].name+"のレイヤー名「"+layObj[i].name.substr(0,5)+"...」に該当文字があります。");
}
}
}
}
■使い方
1:あらかじめドキュメントを開いておきます。
2:スクリプトを実行します。
3:文字入力ダイアログが表示されるので調べる文字を入れます。正規表現も使えます。
4:全てのドキュメントの全てのレイヤーを調べ該当する文字がある場合に警告ダイアログを表示します。
■ポイント
なし
■実際のスクリプトをダウンロード(sample.js.zip)