Skip to main content
garym50436266
Participant
February 3, 2017
Answered

Script for unlocked layers only

  • February 3, 2017
  • 2 replies
  • 533 views

Hi All,
I'm very new to scripting so still learning as I go.

I have picked the following script up from this forum and changed a few things within. I'm looking to move all text frames from unlocked layers to a layer named 'HIDDEN'. The problem with this script is that it won't work with any of the layers locked and I have tried many things with no success.

var myDoc = app.activeDocument;

try{

    var myLayer = myDoc.layers.add({name:"HIDDEN"}); 

}catch(e){myLayer = myDoc.layers.item('HIDDEN')};

myDoc.textFrames.everyItem().itemLayer = myLayer;

I would be grateful for any help.

Many Thanks
Gary

This topic has been closed for replies.
Correct answer tpk1982

Try this.. it will move text frames only from unlocked layers

var myDoc = app.activeDocument;

var layer = myDoc.layers;

myLayer = myDoc.layers.item('HIDDEN');

if (myLayer.isValid==false){ 

var myLayer = myDoc.layers.add({name:"HIDDEN"});

for (var i =0;i<layer.length;i++){

    if(layer.locked == false){

        layer.textFrames.everyItem().itemLayer = myLayer;

    }

}

2 replies

tpk1982
Legend
February 3, 2017

instead of try catch use this

var myDoc = app.activeDocument;

myLayer = myDoc.layers.item('HIDDEN');

if (myLayer.isValid==false){ 

var myLayer = myDoc.layers.add({name:"HIDDEN"});

myDoc.textFrames.everyItem().itemLayer = myLayer; 

tpk1982
Legend
February 3, 2017

Working in my end.. what error did you get?

garym50436266
Participant
February 3, 2017

Hi I got this error.

tpk1982
tpk1982Correct answer
Legend
February 3, 2017

Try this.. it will move text frames only from unlocked layers

var myDoc = app.activeDocument;

var layer = myDoc.layers;

myLayer = myDoc.layers.item('HIDDEN');

if (myLayer.isValid==false){ 

var myLayer = myDoc.layers.add({name:"HIDDEN"});

for (var i =0;i<layer.length;i++){

    if(layer.locked == false){

        layer.textFrames.everyItem().itemLayer = myLayer;

    }

}