After Effectsのアクティブなコンポジションから、直接参照されているソースをプロジェクトパネル内の新しいフォルダへ移す方法です。
指定フォルダ内だけを対象にする場合と、そのフォルダ内を除外する場合を切り替えられます。
対象になる素材と、変更する範囲
この処理が変更するのはプロジェクトパネルのフォルダ階層です。
ディスク上のファイルを移動・コピーする処理ではありません。
参照しているプリコンポ自体は対象になりますが、その内部にある素材は再帰的に調べません。
非表示レイヤーの参照元や平面素材も対象になります。
同じ名前の別素材は区別します。
素材名の部分一致で探すのではなく、レイヤーのsourceとプロジェクトアイテムのidを使います。
共有素材は1つのアイテムなので、別のコンポで使っていてもプロジェクトパネルでの所在が変わります。
実行前に確認すること
プロジェクトを別名保存し、対象のコンポジションを選択してください。
以下は旧記事の欠落したコードを置き換えた修正版です。
2026年10月3日、WindowsのAfter Effects 26.5×89日本語環境で、平面素材とプリコンポを使って動作を確認しました。
先頭のMODEをincludeにすると指定フォルダ内、excludeにすると指定フォルダ外が対象です。
FOLDER_NAMEには、プロジェクト内で一意のフォルダ名を指定します。
同名フォルダが複数ある場合は処理を止めます。
INCLUDE_SUBFOLDERSがtrueなら下位フォルダも含み、falseなら直下だけを判定します。
修正版スクリプト
/* 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件ならフォルダを作りません。
同名の出力フォルダが既にあっても再利用しません。
別の新しいフォルダを作ります。
実行後は件数と対象アイテムを照合し、コンポの参照や再生が維持されているか確認してください。
期待と違う結果になったとき
素材が見つからない場合は、直接参照ではなくプリコンポの内部だけで使っていないか確認します。
同名フォルダのエラーはFOLDER_NAMEを一意にして解消します。
コンポ選択のエラーでは、フォルダではなく対象コンポを選び直します。
途中でエラーが出た場合は一部の移動が残る可能性があるため、編集メニューから処理を取り消して状態を確認してください。
実機確認と練習用プロジェクト
2026年10月3日、Windows・After Effects 26.5×89(日本語)で、自作の平面素材・プリコンポ・テキストを使って確認しました。
all・include・exclude、下位フォルダを含む場合と含まない場合、同じソースの重複使用、指定フォルダの欠落・重複、無効なMODE、対象0件の計11項目で期待した処理になりました。

includeでは指定フォルダ内の直接参照ソースだけが移り、excludeではその外にある直接参照ソースだけが移りました。
allの手動実行では、Ctrl+Zを1回実行して、新規フォルダが消え、3ソースが元のフォルダへ戻ることも画面で確認しました。
練習用AEP・スクリプト・説明書をダウンロード(ZIP)して、実案件の前に同じ操作を試せます。
練習用AEPはAE 2026で保存したため、古いバージョンで開けることは確認していません。
画像・動画ファイルの読み込み、カメラ・シェイプレイヤー、移動途中の例外、他バージョン、レンダリング結果は今回の実機確認に含めていません。
参考資料と関連記事
Adobe公式:スクリプトの読み込みと実行、After Effects Scripting Guide:AVLayer.source、Item.id・parentFolderを参照しました。
後者のAPIガイドはコミュニティ管理の資料です。
資料確認日:2026年10月3日。
フォルダを限定せず使用ソースをまとめる方法と、After Effectsの使い方まとめも参照してください。
