Skip to main content
Participant
June 21, 2024
Answered

レイヤーパネルで現在選択している(複数)レイヤー等を一発でリネームするスクリプトを作りたい。

  • June 21, 2024
  • 2 replies
  • 922 views

レイヤーパネルで現在選択しているレイヤーやオブジェクトの名前を一括でリネームするするクリプトを作りたいと思っています。

 

activeLayerは一つのレイヤーしか取れず、複数選択していた場合に使えませんでした。
選択Itemのparentだとレイヤーは取れるものの、Itemを選択していた場合にそれが取得できませんでした。

画像のように選択したものをひとまず取得する方法はございませんでしょうか?
This topic has been closed for replies.
Correct answer sttk3

パネルで選んだ複数のレイヤーの中身を選択するIllustrator用JavaScriptを書いたことがあります。

 

このスクリプトでは、アクションにて [新規サブレイヤーに集める] を実行し、できたサブレイヤーの中身を調べることで選択していたレイヤーを特定しています

2 replies

sttk3Correct answer
Legend
June 21, 2024

パネルで選んだ複数のレイヤーの中身を選択するIllustrator用JavaScriptを書いたことがあります。

 

このスクリプトでは、アクションにて [新規サブレイヤーに集める] を実行し、できたサブレイヤーの中身を調べることで選択していたレイヤーを特定しています

ajabon grinsmith
Community Expert
Community Expert
June 21, 2024

完全に一本とられた感…!

ajabon grinsmith
Community Expert
Community Expert
June 21, 2024

ExtendScriptでは不可能ですね…

アートボード上で選択したオブジェクトから辿るしかなさそうです。

 

>Itemを選択していた場合にそれが取得できませんでした

ここがよくわからなかったのですが、「レイヤーパネル上でオブジェクトを選択(アートボード上では選択状態にならない、ハイライトさせただけ)」という意味だったでしょうか?

 

名前のある広いところの代わりに、右端の◯のさらに右の空きをクリックすれば、パネル上だけでなく実際に選択されたオブジェクトとなります。マウス操作がほんの少しこまかくなるだけで、手数(てかず)は変わりません。

それで運用してはどうでしょう?

 

以下余談ですが、activeLayerはあてにしないほうがよいです。

例として、alert(app.activeDocument.activeLayer.name); を実行した結果のスクショ2つです。

違いがわかるでしょうか。

オブジェクトが何も選択されていない状況で、レイヤーパネル上で複数のレイヤーをshiftキー併用でハイライトさせた場合の、最後にハイライトされたレイヤーがactiveLayerとなるです。

 

もう1つ出します。

これは、①レイヤー2をハイライト ②レイヤー4をshiftクリック(挟まれたレイヤー3も含めてハイライトされる)③レイヤー4を⌘+クリック(Windowsならctrl+クリック)してハイライト解除

してactiveLayerを取得したものです。これでもレイヤー4が返ります。

 

最後にもう1つ。

オブジェクト選択後に、上記①-③と同じ手順を踏んだものです。

そんなかんじです。