Blue-Screeeeeeen.net-youichi7imazekiのDTPメモ-

トップページ » InDesign » 【InDesign】選択しているオブジェクトに連番で名前をつける

【InDesign】選択しているオブジェクトに連番で名前をつける

公開日:2017年3月31日 最終更新日:2017年4月4日

 InDesignでオブジェクトに名前をつけることはそうそうないので、「何に使うんだ」という感じですが…Illustratorでも動くので、むしろそっちのほうが使いみちがありそうです。InDesign CS5以降で動きます。


1.選択順([レイヤー]パネルで下にあるものから)で番号をつける

var selObj = app.activeDocument.selection;
var selCount=selObj.length;

if(selCount==0){
  alert("オブジェクトが選択されていません")
}else{
    var pr=prompt("任意のオブジェクト名を入力。入力なしなら番号だけ入る","");
    var arr = [];
    for (var i=0; i<selCount; i++) {
     arr[i] = i+1;//1からスタートに
     var Objname=pr+arr[i]
     selObj[i].name = Objname;
    }    
    }


2.選択したオブジェクトを座標順(左上からZ型)で連番

 Illustratorでは、visibleBoundsの順序がInDesignと違うため、順序はN型になります。IllustratorでZ型にする場合はこちら

//並べ替え関数。左上からZ型に並べ替えていくように。IllustratorだとN型になっちゃう
//-1が返る場合は前に、1が返る場合は後ろに。0は順番に変更なし
function sortselObj(a, b){
  var y1 = a.visibleBounds[0];
  var x1 = a.visibleBounds[1];
  var y2 = b.visibleBounds[0];
  var x2 = b.visibleBounds[1];
  if (y1 > y2) {
    return 1;
  } else if (y1 < y2) {
    return -1;
  } else if (y1 == y2) {
    if (x1 == x2) {
      return 0;
    } else if (x1 > x2) {
      return 1;
    } else if (x1 < x2) {
      return -1;
    }
  }
}

var selObj = app.activeDocument.selection;
var selCount=selObj.length;
  selObj.sort(sortselObj)//配列の順序を替える
if(selCount==0){
  alert("オブジェクトが選択されていません")
}else{
  var arr = [];
  var pr=prompt("任意のオブジェクト名を入力。入力なしなら番号だけ入る","");
    for (var i=0; i<selCount; i++) {
     arr[i] = i+1;//1からスタートに
     var Objname=pr+arr[i]
     selObj[i].name = Objname;
   }
}


 最近作成していた「選択オブジェクト」を基準に動くスクリプト、ソーティングを入れて強化できるような気が…たとえば「選択したオブジェクトをそれぞれアートボードにする」とか。

タグ:


  • 最近の投稿

  • カテゴリー

  • 月別の記事

  • 書籍など

    おことわり

     Adobe、InDesign、Illustrator、Photoshop、Acrobatは、Adobe Systems Incorporated(アドビシステムズ社)の米国および他の国における商標または登録商標です。本サイトでは、RおよびTMを省略しております。