Skip to main content
Participant
September 30, 2024
Answered

スクリプト内でのコンポ名の指定について

  • September 30, 2024
  • 1 reply
  • 278 views

皆様、いつもお世話になっております。

 

画像左のように

コンポ1からサイズを取得し、コンポ2にサイズを拡大して反映させるようにしています。

問題なく動作しました。

 

フォルダー構成が変わったり、コンポの順序が変わる可能性があるため、コンポ名を指定して

動作するようにしようと思い、画像右のように変更しました。

 

エラーはでないのですが、動作もしなくなってしまいました。

おそらくコンポ名の定義のさせ方が違うと思います。

 

わかる方がいらっしゃいましたら、ご返信いただきたいです。

よろしくお願い致します。

 

This topic has been closed for replies.
Correct answer stunning_Sunflower16B7

左のcomp_1とcomp_2はコンポ(CompItem)なのですが、右のcomplist配列の中身は文字列なのでそのままでは文字列に対して値を設定していることになり、コンポには作用しません。

https://ae-scripting.docsforadobe.dev/items/compitem.html#compitem-object

 

文字列からコンポを取得する以下のような関数を書くのが良いかなと思います。

function getComp(comp_name) {
    for (var i = 1; i <= app.project.numItems; i++) {
        var item = app.project.item(i)
        if (!(item instanceof CompItem)) continue;
        if (item.name === comp_name) return item;
    }
}

var complist = [
    getComp('01_layout'),
    getComp('02_camera'),
]

名前に一致するコンポが見つからなかった場合は以降を処理しないようにする等の処理が必要になります。

1 reply

Participating Frequently
September 30, 2024

左のcomp_1とcomp_2はコンポ(CompItem)なのですが、右のcomplist配列の中身は文字列なのでそのままでは文字列に対して値を設定していることになり、コンポには作用しません。

https://ae-scripting.docsforadobe.dev/items/compitem.html#compitem-object

 

文字列からコンポを取得する以下のような関数を書くのが良いかなと思います。

function getComp(comp_name) {
    for (var i = 1; i <= app.project.numItems; i++) {
        var item = app.project.item(i)
        if (!(item instanceof CompItem)) continue;
        if (item.name === comp_name) return item;
    }
}

var complist = [
    getComp('01_layout'),
    getComp('02_camera'),
]

名前に一致するコンポが見つからなかった場合は以降を処理しないようにする等の処理が必要になります。

Participant
September 30, 2024

ありがとうございます。解決いたしました。
すばらしいです。