InDesignでつくれらた既存カタログから商品番号を出現順に抜き出す.
たとえば、商品番号が 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