空白ボックスの削除

[4351]空白ボックスの削除 | 投稿者:murata | 投稿日:2010/03/05(Fri) 16:54:42
MacOS 10.5.8
InDesignCS3(5.0.4)で作業しています。

データ結合を使って色々流し込みをしているのですが、
その際にできる空白の文字ボックスや画像ボックスを
一括で削除できる方法はないでしょうか?
検索と置換で探してというのも考えたのですが、
探せてもオブジェクトを削除はできませんよね?
すいませんがよろしくお願いします。
» 1
[4354]Re: 空白ボックスの削除 | 投稿者:いき | 投稿日:2010/03/06(Sat) 01:50:24
> 探せても
え?
私は日ごろ割とInDesignを使っているほうだと思っていましたが、まだまだ不勉強でお恥ずかしい。
オブジェクト検索で、内容が空のオブジェクトを検索できるんですか?
よければ、やり方を教えてください。


それはそうと、思いっきり未熟な私がJavascriptでなんとかならないかと考えてみました。
contentsの内容が""(空)のフレームを削除すればよいかと思って試したら、その方法で削除できるのはテキストフレームだけでした。
画像フレームについては、ContentType.graphicTypeのオブジェクトを全選択した後で、allGraphics.parentで画像を含むフレームを選択解除してやればいいかと思ったのですが......。
selectionに対してremove()メソッドが有効だと思っていたのですがどうやらそうではなく、この方法では削除できませんでした。
今は自宅なので、月曜に時間ができるようなら少し考えてみます。

ところで、空のグラフィックフレームやテキストフレームって、塗りや線に色をつけてタイトルの飾りとして使ったりしませんか?
あと、不可視の回り込みオブジェクトとして使ったり。
そういうものは削除対象から外すとなると、スクリプトの行数もそれなりに長くなりそうです。
たとえ月曜に時間が出来ても、私の頭ではその日のうちに書き上げるのは難しそうですね。
» 2
[4355]Re: 空白ボックスの削除 | 投稿者:murata | 投稿日:2010/03/06(Sat) 10:58:13
>いき様
大変申し訳ございません。こちらの方が勉強不足でした。
色々オブジェクト検索やってみましたができませんでした。
軽はずみな質問をして大変申し訳ございませんでした。

いき様の最後の部分で書かれている部分で申し訳ないのですが、
とりあえず当初の目的が画像と文字等をセットしてCSVから読み込んだデータ結合ファイルでできてしまう、空の画像ボックスと空のテキストファイルを削除したかったのです。そのテキストボックスの中は空かと思っていたのですが、制御文字の【:】が入っていまして空白ではなくその制御文字だけが含まれているテキストボックスを削除したかったのです。勉強不足ですいませんでした。もう少し色々調べてやっています。
» 3
[4356]Re: 空白ボックスの削除 | 投稿者:小泉 | 投稿日:2010/03/06(Sat) 14:30:18
ASです。

細かい検証はしていませんが、

tell document 1 of application "Adobe InDesign CS4" to delete (every text frame whose contents is in "ほげほげ")

これで「ほげほげ」と入っているテキストフレームは削除できます。
ほげほげ乃部分を制御文字にすればいけるかな。

画像ボックスは削除対象にするスォッチ名を作って操作すればできそうですね。
» 4
[4357]Re: 空白ボックスの削除 | 投稿者:mg | 投稿日:2010/03/06(Sat) 17:39:28
>制御文字の【:】が入っていまして空白ではなくその制御文字だけが含まれている

それは x0feff (ZERO WIDTH NO-BREAK SPACE)だと思います。
空のテキストフレームにしても、画像フレームもはscript labelを併用したら絞り込めそうです。
» 5
[4358]Re: 空白ボックスの削除 | 投稿者:mg | 投稿日:2010/03/07(Sun) 23:06:03
>script labelを併用したら絞り込めそう
と書いておいて、データ結合する前にフレームに仕込みが必要とかいておりませんでした。すでにデータ結合後だと使えませんが、自分ならこんな感じでやります。

var doc=app.documents[0];
var lab="delete_this";//データ結合元の削除予定のフレームにスクリプトラベル当てておく。

var allObj=doc.allPageItems;
for(i=allObj.length-1; i >=0; i--){
   if(allObj[i].label==lab){
   if(allObj[i].contentType==ContentType.GRAPHIC_TYPE && allObj[i].graphics.length==0){
           allObj[i].remove();
           }
   else if(allObj[i].contentType==ContentType.TEXT_TYPE && allObj[i].parentStory.contents.charCodeAt(0).toString(16)=="feff"){
           allObj[i].remove();
           }
       }
   }
» 6
[4365]Re: 空白ボックスの削除 | 投稿者:murata | 投稿日:2010/03/08(Mon) 14:30:21
>小泉さん、mgさん
ありがとうございます!

>script labelを併用したら絞り込めそう
データ結合前のテンプレートにスクリプトラベルをあてて、
結合後に空の画像ボックス削除できました。
しかしテキストで一部文字があるのに削除されてしまう部分があったのと、元々テンプレートに入れていた文字"()"だけのものも削除できるようにしてみたいのでこの機会に勉強してみようかと思います!
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア