Skip to main content
Participant
July 14, 2025
Answered

スクリプトで選択したレイヤーを次元分割させたい

  • July 14, 2025
  • 1 reply
  • 172 views
win11、Aeは2025を使っています。
 
選択したレイヤーの位置プロパティを次元分割するようにしたいのですが、
以下のように書いてボタンを押しても何も起こらないのですがどこがおかしいのでしょうか?
レイヤーを選択しなかった際のアラートはしっかり表示されます。
 
 
sepBtn.onClick = function(){
    var sel = app.project.activeItem.selectedLayers;
    if(sel.length > 0){
        for(var i = 0; i < sel.length; i++){
            var posProp = sel[i].property("Position");
            if(!posProp.isSeparationLeader){
                posProp.dimensionsSeparated = true;
            }
        }
    }else{
        alert("レイヤーを選択してください。");
    }
}
Correct answer Mukaida

5〜6行目を下記のコードに書き直してみてはどうでしょう。
After Effects日本語版の場合は、プロパティ名を日本語に変更(位置)、英語版の場合は英語名(Position)のままで利用できます。

 

var posProp = sel[i].property("トランスフォーム").property("位置");
if(posProp.isSeparationLeader == true){

 

 

1 reply

MukaidaCommunity ExpertCorrect answer
Community Expert
July 16, 2025

5〜6行目を下記のコードに書き直してみてはどうでしょう。
After Effects日本語版の場合は、プロパティ名を日本語に変更(位置)、英語版の場合は英語名(Position)のままで利用できます。

 

var posProp = sel[i].property("トランスフォーム").property("位置");
if(posProp.isSeparationLeader == true){

 

 

Participant
July 17, 2025

ありがとうございます!

これでいけました!

 

日本語版を使っているのですが、以下の部分は英語と日本語のどちらでも行けました。

var posProp = sel[i].property("トランスフォーム").property("位置");

以下の箇所で == true が抜けていたのが一番の問題だったみたいです。

if(posProp.isSeparationLeader == true){

 

Community Expert
July 17, 2025

スクリプトが動作した様で良かったです。


手直しした箇所について記しておきます。
おそらくAIによって作成されたコードだと思いますが、間違いは、2箇所ありました。


1個目は、property("トランスフォーム")が抜けているためにエラーが発生してスクリプトはここで中断してしまいます。

 

2個目は、if(!posProp.isSeparationLeader)の部分ですが、頭にある' ! ' は、’ ==true ’と似たようなものですが今回は結果が変わってしまいます。
' !! ' とすれば同じ結果になっていました。

if(!! posProp.isSeparationLeader)

に書き換えても正常に動作します。