トップページ » InDesign » 【InDesign】アンカーつきオブジェクトをスクリプトで取得
公開日:2020年5月20日 最終更新日:2020年11月16日
アンカー付きオブジェクトをスクリプトで取得するときに手こずったので、留意事項を書いています。
アンカー付きオブジェクトは、ドキュメントからallPageItemsやpageItemsで取得することができません。
あくまでも、「ドキュメントに置いてあるテキストフレームに挿入したオブジェクトを取得」というアンカー付きオブジェクトを入れる際の手順を、コードを書くときにも意識する必要がありました。
ここでハマること幾星霜…
var doc=app.activeDocument;
var sel=doc.selection[0];
var ancs=[];
for(var i = 0;i < sel.pageItems.length;i++){
if(sel.pageItems[i].anchoredObjectSettings.anchoredPosition == AnchorPosition.anchored){
ancs.push(sel.pageItems[i]) ;
}
}
alert(ancs.length);
/*アンカー付きオブジェクトの「親文字からの位置」
sel.pageItems[i].anchoredObjectSettings.anchoredPosition
AnchorPosition.INLINE_POSITION インライン
AnchorPosition.anchored カスタム
AnchorPosition.ABOVE_LINE 行の上
*/
こちらのスクリプトをテキストフレームを選択した状態で実行すると、[アンカー付きオブジェクトオプション]で、[親文字からの位置]が[カスタム]になっているオブジェクト数が通知されます。
試しにこちらのページで実行すると、「0」がアラートされました。というのも、このテキストフレームでは[カスタム]で挿入しているアンカー付きオブジェクトが無いためです。
では、6行目の
if(sel.pageItems[i].anchoredObjectSettings.anchoredPosition == AnchorPosition.anchored){
を、
if(sel.pageItems[i].anchoredObjectSettings.anchoredPosition == AnchorPosition.INLINE_POSITION){
に変更して実行してみます。すると、「3」がアラートされます。このテキストフレームには、インラインで挿入されたアンカー付きオブジェクトが3つあるということです。
スクリプトでアンカー付きオブジェクトを掴めればあとはこっちのもので、「カスタム」になっているアンカー付きオブジェクトの画像を一括置換、キャプションをいっぺんに差し替える、などができます。
【Illustrator】塗りブラシツールなどのブラシサイズを素早く変更するショートカット 22310 views
【InDesign/Illustrator/グレースケール画像】なぜ色がつかない? 10338 views
【InDesign】オブジェクトの位置をササッと入れ替える操作 9095 views
【InDesign】ベースライングリッド/カスタムベースライングリッドを設定 8532 views
【InDesign】InDesignタグを使うときの覚え書き 7483 views
【InDesign/Illustrator】配置したグレースケールpsdファイルも着色できるが、いくつか注意が必要 7012 views
【Illustrator/InDesign】それぞれの[パスファインダー]パネルでできること、できないこと 6998 views
【DTP】分版プレビューをする方法まとめ2014年版 6865 views
【InDesign/CEP】InDesignの画像書き出しは結構優秀。画像/スニペット書き出しエクステンション「assetterEX」 6795 views
【Illustrator/Acrobat】マルチアートボードから、まとめてpng/jpgで保存する方法あれこれ 6479 views
【InDesign】「拡大/縮小」に関わるショートカット 6469 views
【Illustrator】通常のレイヤーとサブレイヤーでは、オブジェクトのロック/表示の挙動が異なる 6097 views
【Illustrator】[段組設定]を使った長方形の分割→結合→再分割 6041 views
【InDesign】[検索と置換]で文字をアンカー付きオブジェクトに一括置換 5946 views
ツイート