よろよろ帳

InDesign JavaScript 勉強中

字取り用

項目[0]とコロン[1]と内容[2]で3つのフレームに分かれているデータに出会ってしまいました。順に選択後実行。[0]にまとめて残りは消します。テキストフレームの字取りデフォルト13Qなのでいったん級数に合わせたフレームグリッドにして戻します。

字取り用
ぼかしました
app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel=app.activeDocument.selection;
var selGB=sel[0].geometricBounds;
var selGB2=sel[2].geometricBounds;
var ary=[];
sel[2].contents=sel[2].contents.replace(/\r/g,"@\r");//改行用(もっといい方法ありそう)
for(var i=0; i<sel[0].lines.length; i++){//中身まとめる
    for(var j=0; j<sel.length; j++){
    ary.push(sel[j].lines[i].contents);
    }
}
var str=ary.join("");
var selQ=sel[0].parentStory.pointSize;
sel[0].parentStory.storyPreferences.frameType = FrameTypes.FRAME_GRID_TYPE;
sel[0].parentStory.gridData.pointSize=selQ;
sel[0].parentStory.storyPreferences.frameType = FrameTypes.TEXT_FRAME_TYPE;
sel[0].geometricBounds=[selGB[0],selGB[1],Math.max(selGB[2],selGB2[2]),selGB2[3]];
sel[0].parentStory.contents=str.replace(/\r/g,"").replace(/@/g,"\r");
sel[0].parentStory.justification=Justification.LEFT_ALIGN;
var arr2=[];
for(var i=0; i<sel[0].paragraphs.length; i++){
    arr2.push(sel[0].paragraphs[i].contents.indexOf(":"))
    }
var max=arr2.sort(function(a,b){return a < b});//降順
app.findGrepPreferences = app.changeGrepPreferences = null; 
app.findGrepPreferences.findWhat = "^.+(?=:)";
app.changeGrepPreferences.jidori=max[0];//最大値
sel[0].parentStory.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null; 
app.findGrepPreferences.findWhat = ":";
app.changeGrepPreferences.leadingAki=0.25;//四部アキ
app.changeGrepPreferences.trailingAki=0.25;
sel[0].parentStory.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null; 
for(var i=1; i<sel.length; i++){
    sel[i].remove();
    }
}
//分かれてないやつ用
app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel=app.activeDocument.selection[0];//テキストフレーム選択
var selGB=sel.geometricBounds;
var selQ=sel.parentStory.pointSize;
sel.parentStory.storyPreferences.frameType = FrameTypes.FRAME_GRID_TYPE;
sel.parentStory.gridData.pointSize=selQ;
sel.parentStory.storyPreferences.frameType = FrameTypes.TEXT_FRAME_TYPE;
sel.geometricBounds=selGB;
var arr=[];
for(var i=0; i<sel.paragraphs.length; i++){
    arr.push(sel.paragraphs[i].contents.indexOf(":"))
    }
var max=arr.sort(function(a,b){return a < b});
app.findGrepPreferences = app.changeGrepPreferences = null; 
app.findGrepPreferences.findWhat = "^.+(?=:)";
app.changeGrepPreferences.jidori=max[0];
sel.parentStory.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null; 
app.findGrepPreferences.findWhat = ":";
app.changeGrepPreferences.leadingAki=0.25;
app.changeGrepPreferences.trailingAki=0.25;
sel.parentStory.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null; 
}