質問

I am able to replace the name of every layer of the current document, but when I pass it "where name ends with" it fails & the exception does not give any valuable feedback.

tell application "Adobe Photoshop CS3"
tell current document
    set name of every layer where name ends with "copy*" to "replace_using_sed"
end tell

end tell

Can you spot the error or perhaps you know an alternative way about this?

役に立ちましたか?

解決

The copy* is causing the error. You can't use * as wildcard in AppleScript. Instead, use ... where name contains "copy" ....

Here's my working version of your script (tested with Photoshop CS5):

tell application "Adobe Photoshop CS3"
    set layerList to name of every layer in current document where name contains "copy"
end tell

repeat with currentName in layerList
    set layerName to text 1 thru ((offset of "copy" in currentName) - 1) of currentName
    tell application "Adobe Photoshop CS3"
        set (the name of first layer in current document where name contains "copy") to layerName
    end tell
end repeat

他のヒント

Not sure if this will fix the whole script, but it's called a "whose" filter... so replace the word "where" with "whose". I'm not saying a whose filter works with photoshop, but you can try. If it doesn't work then you have to get all of the layers, loop through them with a repeat loop, and filter each name one-by-one.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top