Skip to main content
Inspiring
August 10, 2024
Answered

【Illustrator】レイヤー名のリネームのスクリプト探しています(After Effects読み込み用)

  • August 10, 2024
  • 2 replies
  • 1928 views

 IllustratorでAfter Effectsに読み込むためのイラスト(人物など)を作成することがあります。

その際、レイヤー名を整頓しておいて、After Effectsで読み込んでからの作業がしやすいようにしたいです。

そこで、下記のようなレイヤー名に一括変更できるスクリプトを探しています。

「01_head」

「02_arm」

「03_body」

事前に「head」「arm」「body」は手打ちで変更しておき、パーツ分けが済んだ後に一括で連番を振れるようなものがいいです。

自分で探したところ、

デザインのメモさんの「rename.jsx」が近かったのですが、「(指定したプレフィックス)01」でリネームされるので、headやarmなどのようにバラバラのパーツ名で連番できません。

三階ラボさんの”アートボード用”のリネームスクリプトのレイヤー版のようなものがあれば最高です。

※mac /Illustrator2024で使用します

よろしくお願いいたします・・!

Correct answer Uske_S

ふくろうさんさん、こんにちは。

 

スクリプトを実行した後、レイヤーを追加したり順序を入れ替えたりする可能性があるな〜と思ったので、重ねがけにも対応してみました。

 

(function () {
  if (app.documents.length === 0) {
    alert("ドキュメントが開かれていません。ドキュメントを開いてから実行してください。");
    return;
  }
  var lay = app.activeDocument.layers;
  for (var i = 0; i < lay.length; i++) {
    lay[i].name = ("0" + (i + 1)).slice(-2) + "_" + deletePrefix(lay[i].name);
  }
})();

alert("終了しました。");

// 先頭の数字2桁+アンダーバーを削除する関数
function deletePrefix(str) {
  if (/^[0-9]{2}_/.test(str)) {
    str = str.replace(/^[0-9]{2}_/, "");
  }
  return str;
}

2 replies

Uske_S
Community Expert
Uske_SCommunity ExpertCorrect answer
Community Expert
August 11, 2024

ふくろうさんさん、こんにちは。

 

スクリプトを実行した後、レイヤーを追加したり順序を入れ替えたりする可能性があるな〜と思ったので、重ねがけにも対応してみました。

 

(function () {
  if (app.documents.length === 0) {
    alert("ドキュメントが開かれていません。ドキュメントを開いてから実行してください。");
    return;
  }
  var lay = app.activeDocument.layers;
  for (var i = 0; i < lay.length; i++) {
    lay[i].name = ("0" + (i + 1)).slice(-2) + "_" + deletePrefix(lay[i].name);
  }
})();

alert("終了しました。");

// 先頭の数字2桁+アンダーバーを削除する関数
function deletePrefix(str) {
  if (/^[0-9]{2}_/.test(str)) {
    str = str.replace(/^[0-9]{2}_/, "");
  }
  return str;
}
Uske_S
Inspiring
October 10, 2024

Uske_S様

ご返信が遅くなり大変申し訳ございません・・!

スクショのように連番できました!

再実行も無事にできました!ありがとうございます!

これからたくさん活用させていただきます。

ajabon grinsmith
Community Expert
Community Expert
August 10, 2024

 

 

var lys = app.activeDocument.layers;
for(var i = 0; i < lys.length; i++){
lys[i].name = padding(i + 1, 2) + lys[i].name;
}

function padding(num, len){
var str = num.toString();
while(str.length < len){
str = "0" + str;
}
return str + "_";
}

 

 

 

スマホから書いてみました。

テストしてないので動かなかったらTen Aさんが添削してくれるのを待ちましょう。

Inspiring
August 11, 2024

ありがとうございます!

やってみたのですが「エラー25」が表示されました。

そもそもスクリプトの入れ方が間違っているかもしれません。。。

こちらのテキストをテキストエディタにコピペして、拡張子を.jsxに変更したものを

Illustratorのフォルダの中のスクリプトに入れるだけではつかえないでしょうか?

お手数おかけいたします。。

 

 

ajabon grinsmith
Community Expert
Community Expert
August 12, 2024

すみません,実機で確認の上,5~6箇所訂正しました(ひどい)

返信にあるスクリプトを編集済みですので再度お試しください。

 

それはそれでUske_Sさんが書いたやつのほうが便利になってますねえw。