Monday, April 30, 2018 / InDesign, ExtendScript, DTP

既存のカタログから商品番号を抜き出してソートする話

InDesignでつくれらた既存カタログから商品番号を出現順に抜き出す.

ExtendScript

たとえば、商品番号が 10桁の数字でテキストフレームに入っていることがわかっているなら 以下のようなスクリプトを使えば、取り出すことができる.

pickup.jsx

var eachPage = function(doc,func){ for(var i=0; i<doc.pages.length; i++){ func(doc.pages.item(i)); } };
var eachPageItem = function(page,func){ for(var i=0; i<page.allPageItems.length; i++){ func(page.allPageItems[i]); } };

var doc = app.activeDocument;
eachPage( doc, function(page){
    eachPageItem(page,function(pageItem){
       var className = pageItem.constructor.name;
       if( className.match(/TextFrame/) ){
         var contents = pageItem.contents;
         if( c.length==10 && c.match( /^[0-9]+$/ ) ){
          $.writeln( contents );
          $.writeln( pageItem.visibleBounds );
         }
       }
    }
});

テキストフレームは visibleBounds 属性を見れば、その配置されている座標を得ることができるので、 これを元に、たとえば 上から下、左から右のルールを適用してソートしてやれば、 既存カタログから商品番号を出現順に取り出すことができる。

InDesign Extendscript 便利ですね。

Extendscript のあれこれやをまとめました。興味ある方は、以下のレポジトリもご覧ください。
https://github.com/mindboard/indesign-extendscript