よろよろ帳

InDesign JavaScript 勉強中

選択にオブジェクト追加

選択したものの左上に共通のオブジェクトを追加します。追加するものは要グループ化。

クリップボードから(コピーかカットしてから実行)

var Doc=app.activeDocument;
var tempRuler = Doc.viewPreferences.rulerOrigin;
Doc.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel=Doc.selection;
Doc.selection = null;
//レイヤー指定したいなら
//Doc.activeLayer= Doc.layers[0];//一番上
//Doc.activeLayer=Doc.layers.itemByName ("new");//名前指定
for(var i=0; i<sel.length; i++){
    var VB=sel[i].visibleBounds;
    app.paste();
    Doc.selection[0].move([VB[1],VB[0]])
    }
}
Doc.viewPreferences.rulerOrigin = tempRuler;

★ライブラリから

var Doc=app.activeDocument;
var tempRuler = Doc.viewPreferences.rulerOrigin;
Doc.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel=Doc.selection;
Doc.selection = null;
for(var i=0; i<sel.length; i++){
    var VB=sel[i].visibleBounds;
    var lib = app.libraries.itemByName("test.indl");//ライブラリ指定
    var La=lib.assets.item("new").placeAsset(Doc);//アセット名指定
    Doc.selection =La;//選ばないとだめみたい
    Doc.selection[0].move([VB[1],VB[0]])
    }
}
Doc.viewPreferences.rulerOrigin = tempRuler;

右下用

var VB2=Doc.selection[0].visibleBounds;
Doc.selection[0].move([VB[3]-(VB2[3]-VB2[1]),VB[2]-(VB2[2]-VB2[0])])

中央用

var VB2=Doc.selection[0].visibleBounds;
var W=VB2[3]-VB2[1];
var H=VB2[2]-VB2[0];
Doc.selection[0].move([VB[1]+((VB[3]-VB[1]-W)/2),VB[0]+((VB[2]-VB[0]-H)/2)])

BoundsはY軸始まりでmoveがX軸始まり…嫌だ!
↓参考
1if-1for(4):複数のオブジェクトをあるオブジェクトに置き換えたい - DTPab