コードは以下の通りです
#target "illustrator" var result = main(); if (result) alert(result); function main(){ if (parseInt(app.version,10)<15) return "IllustratorCS5以降対応のスクリプトです"; if (!app.documents.length) return "ドキュメントが開かれていません"; var myDoc = app.activeDocument; if (!myDoc.selection.length || myDoc.selection.length>1) return "オブジェクトを一つだけ選択してください"; var myArb = myDoc.artboards[myDoc.artboards.getActiveArtboardIndex()]; var myArbRec = roundAry (myArb.artboardRect, 3); var mySel = myDoc.selection[0]; var mySelBou = roundAry (mySel.visibleBounds, 3); if (mySelBou[0] < myArbRec[0]) mySel.translate (-mySelBou[0]+myArbRec[0], 0);//左 if (mySelBou[1] > myArbRec[1]) mySel.translate (0, -mySelBou[1]+myArbRec[1]);//上 if (mySelBou[2] > myArbRec[2]) mySel.translate (-mySelBou[2]+myArbRec[2], 0);//右 if (mySelBou[3] < myArbRec[3]) mySel.translate (0, -mySelBou[3]+myArbRec[3]);//下 function roundAry (ary, round){ for (var i=0; i<ary.length; i++){ ary[i] = Math.round (ary[i]*(Math.pow (10, round))) / Math.pow (10, round); } return ary; } }
久しぶりにイラレのDOMいじったのでいい勉強になりました。小数点丸めたりしているのは好みです。
それと、InDesignと違ってexitメソッドがないため、関数の実行として、エラーで処理を中断する場合はreturn
噛ませるとしてみました。
それと、このネタ自体はTwitterで@AJABON先生と雑談する中でできあがったもので、是非先生のスクリプトもご参照ください。