プロジェクト内のコンポジション、または特定の拡張子を持つフッテージを、新しいプロジェクトフォルダへまとめます。
未使用素材の削除を先に行う必要はありません。
コードはローカルのAPI模擬テストで検証しています。
AEでの画面・取り消し・素材参照の維持は未確認のため、実案件の前に別名保存した練習プロジェクトで確認してください。
分類する対象と変更範囲
MODEがcompsならプロジェクト全体のCompItemが対象です。
現在のコンポだけでなく、プリコンポも含みます。
MODEがextensionなら、ファイル参照を持つFootageItemの実ファイル名の拡張子を調べます。
プロジェクトパネルの表示名を変更していても、画像の実ファイル名がPNGなら対象になります。
PNGという名前のコンポや、表示名だけに.pngがあるJPGはPNG分類の対象になりません。
平面などファイル参照のない素材は拡張子では分類しません。
プロジェクト内の所在だけを変え、ディスク上のファイル・レイヤーの参照元・素材名は変更しません。
未使用素材も条件に合えば対象です。
| 設定 | 対象 | 確認する結果 |
|---|---|---|
| MODE = comps | 全CompItem | プリコンポを含むコンポだけ移動 |
| MODE = extension / EXTENSION = png | 実ファイル名がPNGのFootageItem | 表示名ではなく実ファイル名で分類 |
| 対象0件 | なし | フォルダを作成しない |
| 同名の出力フォルダがある | なし | 変更せず名前の競合を通知 |
分類用スクリプト
OUTPUT_NAMEは既存フォルダと重複しない名前にします。
EXTENSIONにはドットを付けずpngなどと記述します。
プロジェクトは2000アイテム以内、分類対象は200件以内に限定しています。
/* Project panel only. No disk moves or unused-footage deletion. Native AE pending. */
(function () {
var MODE = "comps"; // comps: all CompItems / extension: matching file-backed FootageItems
var EXTENSION = "png"; // extension mode only; no dot
var OUTPUT_NAME = "CGM_comps"; // must not already exist as a folder
var project = app.project, matches = [];
if (!project || project.numItems > 2000) { alert("プロジェクトを開き、2000アイテム以内で実行してください。"); return; }
if ((MODE !== "comps" && MODE !== "extension") || !/^[A-Za-z0-9]+$/.test(EXTENSION) || !OUTPUT_NAME) { alert("MODE・EXTENSION・OUTPUT_NAMEを確認してください。"); return; }
for (var i = 1; i <= project.numItems; i++) {
var item = project.item(i);
if (item instanceof FolderItem && item.name === OUTPUT_NAME) { alert("出力フォルダ名が既にあります。OUTPUT_NAMEを一意の名前にしてください。"); return; }
if (MODE === "comps" && item instanceof CompItem) matches.push(item);
else if (MODE === "extension" && item instanceof FootageItem && item.file) {
var parts = item.file.name.split(".");
if (parts.length > 1 && parts[parts.length - 1].toLowerCase() === EXTENSION.toLowerCase()) matches.push(item);
}
}
if (!matches.length) { alert("対象0件です。フォルダは作りません。"); return; }
if (matches.length > 200) { alert("対象が200件を超えています。プロジェクトを分けて確認してください。"); return; }
app.beginUndoGroup("種類別にプロジェクトアイテムを整理");
try {
var destination = project.items.addFolder(OUTPUT_NAME);
for (var n = 0; n < matches.length; n++) matches[n].parentFolder = destination;
alert(matches.length + "アイテムを「" + OUTPUT_NAME + "」へ移動しました。");
} catch (error) { alert("フォルダ作成や一部の移動が残る場合があります。編集メニューで取り消して確認してください。\n" + error.toString()); }
finally { app.endUndoGroup(); }
}());
コードをUTF-8のテキストファイルに保存して拡張子を.jsxにします。
After Effectsの「ファイル」→「スクリプト」→「スクリプトファイルを実行」から選択してください。
スクリプトの常設インストールは必要ありません。
表示名と実ファイル名が違う素材で試す
別名保存した練習プロジェクトで、PNG1枚・JPG1枚・コンポ2個を用意します。
PNGの表示名を「背景」、JPGの表示名を「sample.png」に変更してください。
MODEをextension、EXTENSIONをpng、OUTPUT_NAMEをCGM_pngにして実行します。
「背景」だけがCGM_pngへ移り、JPGとコンポが元の階層に残ることを確認します。
別の名前をOUTPUT_NAMEに指定してcompsモードも試し、コンポ2個だけが移るか照合します。
共有コンポの参照とプレビューも確認してください。
戻し方と条件に合わない場合
「編集」メニューで直前の処理を1回取り消し、新規フォルダが消え、対象素材が元の階層へ戻るか確認します。
同名フォルダのエラーは、既存フォルダを削除せずOUTPUT_NAMEを変更して解消します。
0件の場合はMODE・実ファイル名・拡張子を照合してください。
途中の例外では新規フォルダや一部の移動が残る場合があります。
取り消して確認し、復元できなければ保存した練習プロジェクトを開き直します。
参考資料と関連記事
ItemCollection.addFolderとItem.parentFolderを参照しました。
資料確認日:2026年10月3日。
API資料はコミュニティ管理のAfter Effects Scripting Guideで、Adobe公式のスクリプト実行方法も参照しました。
関連記事
素材移動・分類・選択・新規作成・ディスクへの保存は変更範囲が異なります。
GitHubの旧実装は本稿の修正版とは同期していません。





