Skip to main content
Participant
September 30, 2024
解決済み

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

  • September 30, 2024
  • 返信数 2.
  • 290 ビュー

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

 

画像左のように

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

問題なく動作しました。

 

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

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

 

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

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

 

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

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

 

このトピックへの返信は締め切られました。
解決に役立った回答 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'),
]

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

返信数 2

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

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