よろよろ帳

InDesign JavaScript 勉強中

ランダムカラー

配色が決まらない時などに。塗りなしだとエラーになるので適当に色をつけて選択実行。
スウォッチ使わずカラー指定でapp.menuActions.itemByID(29189).invoke()なしでfillColor.colorValueを変更すると、選択したものだけでなくスウォッチの値ごと変わりましたが名称未設定カラーも同設定の色が変わるようです。

app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel=app.activeDocument.selection;
var len=sel.length;
//app.panels.itemByName("カラー").visible=true;
app.panels.item('$ID/Color').visible=true;
app.menuActions.itemByID(29189).invoke();//CMYK
var rc=[];//色用
var d=[];//ペーストしたやつ用
for(var i=0; i<len; i++){
    C=getRandomI(0,100);//最小,最大
    M=getRandomI(0,100);
    Y=getRandomI(0,100);
    K=getRandomI(0,10);//黒は少なめ
    rc.push([C,M,Y,K])
    }
//$.writeln(rc)
for(var i=0; i<len; i++){
    sel[i].fillColor.colorValue=[rc[i][0],rc[i][1],rc[i][2],rc[i][3]];
    sel[i].select();
    app.cut();
    app.pasteInPlace();//カット&ペーストなしだと全部配列最後の色になる
    d.push(app.selection[0])
    }
for(var i=0; i<len; i++){
    d[i].select(SelectionOptions.addTo)
    }//いい具合になるまで繰り返したいので選択して終了
}
app.panels.item('$ID/Scripts').visible=true;//スクリプトパネル前面に

function getRandomI(min, max) {
  min=Math.ceil(min);
  max=Math.floor(max);
  return Math.floor(Math.random()*(max-min+1)+min); //The maximum is inclusive and the minimum is inclusive
}

↓参考
InDesignのパネルメニューをJavaScriptから実行するときはパネルがvisibleな必要がある - chalcedony_htnの日記
Solved: invoking menu - language - Adobe Support Community - 8858935
Math.random() - JavaScript | MDN
イラストレーターならこちら
https://github.com/johnwun/js4ai/blob/master/vary_hues.js