Amazonで商品を見るセール会場へ

After Effectsの使用素材を指定フォルダから整理するスクリプト|含める・除外する条件

After Effectsのアクティブなコンポジションから、直接参照されているソースをプロジェクトパネル内の新しいフォルダへ移す方法です。

指定フォルダ内だけを対象にする場合と、そのフォルダ内を除外する場合を切り替えられます。

目次

対象になる素材と、変更する範囲

この処理が変更するのはプロジェクトパネルのフォルダ階層です。

ディスク上のファイルを移動・コピーする処理ではありません。

参照しているプリコンポ自体は対象になりますが、その内部にある素材は再帰的に調べません。

非表示レイヤーの参照元や平面素材も対象になります。

同じ名前の別素材は区別します。

素材名の部分一致で探すのではなく、レイヤーのsourceとプロジェクトアイテムのidを使います。

共有素材は1つのアイテムなので、別のコンポで使っていてもプロジェクトパネルでの所在が変わります。

スポンサーリンク

実行前に確認すること

プロジェクトを別名保存し、対象のコンポジションを選択してください。

以下は旧記事の欠落したコードを置き換えた修正版です。

2026年10月3日、WindowsのAfter Effects 26.5×89日本語環境で、平面素材とプリコンポを使って動作を確認しました。

先頭のMODEをincludeにすると指定フォルダ内、excludeにすると指定フォルダ外が対象です。

FOLDER_NAMEには、プロジェクト内で一意のフォルダ名を指定します。

同名フォルダが複数ある場合は処理を止めます。

INCLUDE_SUBFOLDERSがtrueなら下位フォルダも含み、falseなら直下だけを判定します。

撮影した練習プロジェクトの、実行前の画面です。

フォルダー「SpecifiedPool17805」の中に、UnusedB17805.psdとUsedA17805.psdが入っています。

フォルダーの外には、OutsideUsed17805.psdがあります。

コンポジション「ActiveComp17805」のレイヤーは、OutsideUsed17805.psdとUsedA17805.psdです。

UnusedB17805.psdは、どのレイヤーにも使われていません。

指定フォルダーの中で使われているのは、UsedA17805.psdだけです。

After Effectsで指定フォルダー内外の使用素材と未使用素材を表示した整理前画面
2026-10-13撮影。Adobe After Effects 26.5.0 (Build 89)、Windows 11 Pro (10.0.26200)。実機画面、原寸保存。

修正版スクリプト

/* AE 26.5x89 日本語環境で平面・プリコンポ・フォルダ条件・取り消しを確認。実案件では別名保存してから実行してください。 */
(function () {
    var MODE = "include"; // all: 全対象 / include: 指定フォルダ内 / exclude: 指定フォルダ外
    var FOLDER_NAME = "comp"; // include/exclude時だけ使用。プロジェクト内で一意にする
    var INCLUDE_SUBFOLDERS = true;
    var comp = app.project ? app.project.activeItem : null;
    if (!(comp instanceof CompItem)) {
        alert("対象のコンポジションを選択してから実行してください。");
        return;
    }
    if (MODE !== "all" && MODE !== "include" && MODE !== "exclude") {
        alert("MODEはall、include、excludeのいずれかにしてください。");
        return;
    }
    var filterFolder = null;
    if (MODE !== "all") {
        var matches = [];
        for (var i = 1; i <= app.project.numItems; i++) {
            var item = app.project.item(i);
            if (item instanceof FolderItem && item.name === FOLDER_NAME) {
                matches.push(item);
            }
        }
        if (matches.length !== 1) {
            alert("対象フォルダ名に一致するフォルダが" + matches.length + "個あります。一意な名前にしてください。");
            return;
        }
        filterFolder = matches[0];
    }
    function isInside(source) {
        var parent = source.parentFolder;
        if (!INCLUDE_SUBFOLDERS) return parent === filterFolder;
        while (parent && parent !== app.project.rootFolder) {
            if (parent === filterFolder) return true;
            parent = parent.parentFolder;
        }
        return parent === filterFolder;
    }
    var sources = [];
    var seen = {};
    for (var n = 1; n <= comp.numLayers; n++) {
        var layer = comp.layer(n);
        if (!(layer instanceof AVLayer)) continue;
        var source = layer.source;
        if (!(source instanceof FootageItem) && !(source instanceof CompItem)) continue;
        if (MODE !== "all") {
            var inside = isInside(source);
            if ((MODE === "include" && !inside) || (MODE === "exclude" && inside)) continue;
        }
        var key = "item_" + source.id;
        if (!seen[key]) {
            seen[key] = true;
            sources.push(source);
        }
    }
    if (!sources.length) {
        alert("条件に一致する直接参照ソースがありません。フォルダは作成しません。");
        return;
    }
    app.beginUndoGroup("使用ソースをプロジェクト内で整理");
    try {
        var destination = app.project.items.addFolder(comp.name + "_used_sources");
        for (var j = 0; j < sources.length; j++) {
            sources[j].parentFolder = destination;
        }
        alert(sources.length + "個のソースを「" + destination.name + "」へ移動しました。");
    } catch (error) {
        alert("整理を完了できませんでした。編集メニューから取り消し、状態を確認してください。\n" + error.toString());
    } finally {
        app.endUndoGroup();
    }
}());

実行手順と結果の確認

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

After Effectsで対象コンポジションを選択し、「ファイル」→「スクリプト」→「スクリプトファイルを実行」からそのファイルを選びます。

スクリプトメニューへ常設するためのインストールは、この実行方法には必要ありません。

対象があれば「コンポ名_used_sources」フォルダを新しく作り、対象アイテムを移します。

対象0件ならフォルダを作りません。

同名の出力フォルダが既にあっても再利用しません。

別の新しいフォルダを作ります。

実行後は件数と対象アイテムを照合し、コンポの参照や再生が維持されているか確認してください。

実行後の画面です。

新しいフォルダー「CollectedUsed17805」に、UsedA17805.psdだけが入りました。

使われていないUnusedB17805.psdは「SpecifiedPool17805」に残り、フォルダーの外にあるOutsideUsed17805.psdも、最上階層に残っています。

After Effectsで指定フォルダー内の使用素材だけが整理された実行結果
2026-10-13撮影。Adobe After Effects 26.5.0 (Build 89)、Windows 11 Pro (10.0.26200)。実機画面、原寸保存。

この画面の出力フォルダーの名前は「CollectedUsed17805」です。

本文のコードが作る「コンポ名_used_sources」とは名前が違います。

移る素材の範囲の見方の例として見てください。

期待と違う結果になったとき

素材が見つからない場合は、直接参照ではなくプリコンポの内部だけで使っていないか確認します。

同名フォルダのエラーはFOLDER_NAMEを一意にして解消します。

コンポ選択のエラーでは、フォルダではなく対象コンポを選び直します。

途中でエラーが出た場合は一部の移動が残る可能性があるため、編集メニューから処理を取り消して状態を確認してください。

実機確認と練習用プロジェクト

2026年10月3日、Windows・After Effects 26.5×89(日本語)で、自作の平面素材・プリコンポ・テキストを使って確認しました。

all・include・exclude、下位フォルダを含む場合と含まない場合、同じソースの重複使用、指定フォルダの欠落・重複、無効なMODE、対象0件の計11項目で期待した処理になりました。

AE実機テストでinclude・excludeと下位フォルダ条件を含む11項目がPASSとなった結果
自作の検証用プロジェクトで確認した結果です(2026/10/03撮影、AE 26.5×89)。

includeでは指定フォルダ内の直接参照ソースだけが移り、excludeではその外にある直接参照ソースだけが移りました。

allの手動実行では、Ctrl+Zを1回実行して、新規フォルダが消え、3ソースが元のフォルダへ戻ることも画面で確認しました。

練習用AEP・スクリプト・説明書をダウンロード(ZIP)して、実案件の前に同じ操作を試せます。

2026年10月26日にZIP内のスクリプトを確認したところ、初期設定はMODE = “all”で、本文のMODE = “include”とは対象範囲が異なりました。

配布AEPで指定フォルダ内だけを試す場合は、ZIP内の説明書に従ってMODE = “include”、FOLDER_NAME = “整理前の素材”に変更してから実行してください。

本文コードのFOLDER_NAME = “comp”も設定例なので、配布AEPで使う場合は「整理前の素材」に変更する必要があります。

この確認ではZIP内のコードと説明書を照合しており、AEPを開いた再実行はしていません。

練習用AEPはAE 2026で保存したため、古いバージョンで開けることは確認していません。

画像・動画ファイルの読み込み、カメラ・シェイプレイヤー、移動途中の例外、他バージョン、レンダリング結果は今回の実機確認に含めていません。

参考資料と関連記事

Adobe公式:スクリプトの読み込みと実行、After Effects Scripting Guide:AVLayer.source、Item.id・parentFolderを参照しました。

後者のAPIガイドはコミュニティ管理の資料です。

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

フォルダを限定せず使用ソースをまとめる方法と、After Effectsの使い方まとめも参照してください。

スポンサーリンク

よくある質問:After Effectsで使用素材を新しいフォルダにまとめるとき

このスクリプトは、何をしますか?

アクティブなコンポジションから、直接参照されているソースを、プロジェクトパネル内の新しいフォルダへ移します。指定フォルダ内だけを対象にする場合と、そのフォルダ内を除外する場合を切り替えられます。

ディスク上のファイルも移動しますか?

移動しません。この処理が変更するのはプロジェクトパネルのフォルダ階層です。ディスク上のファイルを移動・コピーする処理ではありません。

どんな素材が対象になりますか?

参照しているプリコンポ自体は対象になりますが、その内部にある素材は再帰的に調べません。非表示レイヤーの参照元や平面素材も対象になります。同じ名前の別素材は区別し、素材名の部分一致ではなく、レイヤーのsourceとプロジェクトアイテムのidを使います。共有素材は1つのアイテムなので、別のコンポで使っていても、プロジェクトパネルでの所在が変わります。

設定の切り替え方を教えてください。

先頭のMODEをincludeにすると指定フォルダ内、excludeにすると指定フォルダ外が対象です。FOLDER_NAMEには、プロジェクト内で一意のフォルダ名を指定します。INCLUDE_SUBFOLDERSがtrueなら下位フォルダも含み、falseなら直下だけを判定します。

スクリプトは、どう実行しますか?

プロジェクトを別名保存し、対象のコンポジションを選択します。コードをUTF-8のテキストファイルに保存して拡張子を.jsxにし、「ファイル」→「スクリプト」→「スクリプトファイルを実行」からそのファイルを選びます。スクリプトメニューへ常設するためのインストールは、この実行方法には必要ありません。

期待と違う結果になったときは?

素材が見つからない場合は、直接参照ではなくプリコンの内部だけで使っていないか確認します。同名フォルダのエラーはFOLDER_NAMEを一意にして解消し、コンポ選択のエラーでは、フォルダではなく対象コンポを選び直します。途中でエラーが出た場合は、一部の移動が残る可能性があるため、編集メニューから処理を取り消して状態を確認してください。

出力フォルダが既にあるときは?

同名の出力フォルダが既にあっても再利用しません。別の新しいフォルダを作ります。対象0件ならフォルダを作りません。実行後は、件数と対象アイテムを照合し、コンポの参照や再生が維持されているか確認してください。

どこまで実機で確認していますか?

2026年10月3日、Windows・After Effects 26.5×89(日本語)で、自作の平面素材・プリコンポ・テキストを使い、all・include・exclude、下位フォルダを含む場合と含まない場合、同じソースの重複使用、指定フォルダの欠落・重複、無効なMODE、対象0件の計11項目で期待した処理になりました。画像・動画ファイルの読み込み、カメラ・シェイプレイヤー、移動途中の例外、他バージョン、レンダリング結果は、今回の実機確認に含めていません。

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

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

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

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