楽天セール開催中!ポイント最大11倍!セール会場へ

After Effectsの選択レイヤーから素材ソースを選ぶ|ソースなしレイヤーに対応

タイムラインで選んだレイヤーの素材ソースを、プロジェクトパネルの選択へ追加するスクリプトです。

素材の置換や移動は行いません。

コードはローカルのAPI模擬テストで検証しています。

AEでの画面・取り消し・素材参照の維持は未確認のため、実案件の前に別名保存した練習プロジェクトで確認してください。

目次

選択できる素材ソースと対象外のレイヤー

アクティブなCompItemの選択レイヤーを調べ、AVLayerが持つFootageItemまたはCompItemだけを対象にします。

同じ素材を何度参照していてもIDで1件にまとめます。

カメラ・ライトやソースを持たないテキスト・シェイプは除外します。

これらを混ぜて選んでも、存在しないsource.selectedへアクセスしません。

プロジェクトパネルで既に選ばれているアイテムは維持します。

この処理は選択を追加するだけで、フォルダを展開して画面内へスクロールする処理ではありません。

修正版スクリプト

タイムラインで1〜100レイヤーを選択して実行します。

旧コードは非コンポをアクティブにした場合やソースがないレイヤーで例外になるため、型とソースの確認を追加しました。

/* Add selection only; no source replacement, disk write or menu command. Native AE pending. */
(function () {
    var project = app.project, comp = project ? project.activeItem : null;
    if (!(comp instanceof CompItem)) { alert("対象コンポジションをアクティブにしてください。"); return; }
    var layers = comp.selectedLayers, sources = [], seen = {}, skipped = 0, added = [];
    if (!layers.length || layers.length > 100) { alert("タイムラインで1〜100レイヤーを選択してください。"); return; }
    for (var i = 0; i < layers.length; i++) {
        if (!(layers[i] instanceof AVLayer)) { skipped++; continue; }
        var source = layers[i].source;
        if (!(source instanceof FootageItem) && !(source instanceof CompItem)) { skipped++; continue; }
        var key = "id_" + source.id;
        if (!seen[key]) { seen[key] = true; sources.push(source); }
    }
    if (!sources.length) { alert("選択レイヤーに選択できる素材ソースがありません。"); return; }
    try {
        for (var n = 0; n < sources.length; n++) {
            if (!sources[n].selected) { added.push(sources[n]); sources[n].selected = true; }
        }
        alert(sources.length + "ソースを選択対象にしました。新規選択は" + added.length + "件、ソースなし/非AVは" + skipped + "レイヤーです。既存のプロジェクト選択は維持します。");
    } catch (error) {
        // Restore only selections added by this invocation if a later setter fails.
        for (var j = 0; j < added.length; j++) { try { added[j].selected = false; } catch (ignored) {} }
        alert("選択処理に失敗しました。プロジェクトパネルの選択状態を確認してください。\n" + error.toString());
    }
}());

コードをUTF-8のテキストファイルに保存して拡張子を.jsxにします。

After Effectsの「ファイル」→「スクリプト」→「スクリプトファイルを実行」から選択してください。

スクリプトの常設インストールは必要ありません。

画像・重複参照・テキストを混ぜて確認する

自作PNG1枚を読み込み、同じPNGを練習コンポの2レイヤーで使います。

テキストとカメラも追加し、プロジェクトを別名保存してください。

実行前のプロジェクトパネルの選択をメモし、4レイヤーをタイムラインで選んで実行します。

PNGが1ソースとして追加され、テキストとカメラが除外され、元のプロジェクト選択が維持されるか確認します。

対象が画面外や閉じたフォルダ内にある場合は、検索欄で素材名を絞るかフォルダを開き、選択を確認してください。

選択成功をスクロール表示成功とは同一視しません。

標準機能で確認する場合は、タイムラインの対象レイヤーを右クリックし「プロジェクト内のレイヤーソースを表示」を使います。

現行バージョンのメニュー階層は実機で確認してください。

選択を戻す方法と切り分け

戻す場合はプロジェクトパネルの選択を解除し、実行前に記録したアイテムを選び直します。

選択状態がUndoで戻るとは保証しません。

素材・レイヤーの内容は変更していません。

対象コンポのエラーではコンポをアクティブにし、未選択のエラーではタイムラインのレイヤーを選びます。

ソース0件の場合はカメラやテキストだけを選んでいないか確認してください。

途中で選択の設定に失敗すると、その実行で追加した選択の解除を試みます。

解除も失敗する可能性があるため、プロジェクトパネルの選択を最後に照合してください。

参考資料と関連記事

AVLayer.sourceとItem.selectedを参照しました。

GitHubの旧実装とは同期していないため、今回の練習には本稿のコードを使います。

資料確認日:2026年10月3日。

API資料はコミュニティ管理のAfter Effects Scripting Guideで、Adobe公式のスクリプト実行方法も参照しました。

関連記事

素材移動・分類・選択・新規作成・ディスクへの保存は変更範囲が異なります。

GitHubの旧実装は本稿の修正版とは同期していません。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次