InDesign CS5自動化作戦 (InDesign CS5 Automation Operation)

全ページのテキストフレーム以外のオブジェクトを削除する

■プログラム説明(ソースコード説明)
 全ページにあるテキストフレーム以外のオブジェクトを削除するにはallPageItemsのconstructor.nameを調べます。この名前がTextFrameの場合は、オブジェクトがテキストフレームということを示しているので、そうでない場合にremove()を使ってオブジェクトを削除します。削除すると内部のオブジェクト順が変わってしまうため、再度オブジェクトが存在するかどうかを調べて完全になくなるまで繰り返すようにします。

■ソースコード
function delItem(delName)
{
pageObj = app.activeDocument.pages;
for (i=0; i<pageObj.length; i++)
{
flag = true;
while(flag)
{
for (j=0; j<pageObj[i].allPageItems.length; j++)
{
dType = pageObj[i].allPageItems[j].constructor.name;
if (dType != delName) pageObj[i].allPageItems[j].remove();
}
flag = false;
for (j=0; j<pageObj[i].allPageItems.length; j++)
{
dType = pageObj[i].allPageItems[j].constructor.name;
if (dType != delName) flag = true;
}
}
}
}
delItem("TextFrame");


■使い方
1:スクリプトを実行します。
2:全ページ内にあるテキストフレーム以外のオブジェクトが削除されます。


■ポイント
 ページ内に含まれる項目には以下の種類があります。

テキストフレーム TextFrame
四角形      Rectangle
楕円       Oval
多角形      Polygon
グラフィック線  GraphicLine

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

写真素材 PIXTA