Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
1

Scripting - Get layer when in a group

Explorer ,
Apr 15, 2022 Apr 15, 2022

So i know i can use the below to get a layer

 

var layerName = "Text BG";
app.activeDocument.activeLayer = layers[layerName];

 

This works fine when the layer isn't within a group, but if it is I get an error

Error 1302: No such element

Line: 53 ->  app.activeDocument.activeLayer = layers[layerName];

 

The layer is within a group called Text Group, how do i go about getting the group correctly?

TOPICS
Actions and scripting
1.3K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
LEGEND ,
Apr 15, 2022 Apr 15, 2022

layers is undefined

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Apr 15, 2022 Apr 15, 2022

Layers is fine, as i said it works fine if the layer isn't in a group.

 

Layers is defined using

var layers = app.activeDocument.layers;

earlier in the script

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Apr 15, 2022 Apr 15, 2022

 

with(activeDocument)
	activeLayer = layerSets['Text Group'].artLayers['Text Bg']

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 15, 2022 Apr 15, 2022

@Desbrina I believe that @Kukurykus has provided one possible solution which you can mark as the correct answer. 

 

In my journey of learning scripting, I have collected various useful snippets. The last example in this link uses layer index:

https://gist.github.com/MarshySwamp/229a0676666a44cdaa007da1cfddc0b7

 

The following is basically the same as the reply from Kukurykus with a slightly different syntax, swapping the layer index numbers in the GitHub Gist example above for names. 

 

activeDocument.activeLayer = activeDocument.layerSets["Text Group"].layers["Text BG"];

 

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 15, 2022 Apr 15, 2022
LATEST

Yes, as the others have mentioned, you need to select the group to get the layer within it. 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines