Home About
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