プロジェクトパネルで選択した素材やフォルダを、実行前の所在を基準に1階層上へ移動するスクリプトです。
ディスク上のファイルは移動しません。
2026年10月14日にWindows 11 Pro・After Effects 26.5(Build 89)で、parentとrootの移動先、取り消し、素材参照の維持を確認しました。実案件の前に別名保存した練習プロジェクトで試してください。
親フォルダと子素材を同時に選ぶ場合
旧コードは移動しながら次の移動先を調べていました。
親フォルダを先に移すと、その中の子素材の移動先も変わるため、選択順によって結果が異なります。
修正版は、全選択アイテムの移動先を先に保存してから移動します。
親と子を同時選択しても、それぞれ実行前の1階層上が移動先です。
| 実行前 | parentの移動先 | rootの移動先 |
|---|---|---|
| ROOT / outer / nested | ROOT | ROOT |
| ROOT / outer / nested / child | ROOT / outer | ROOT |
| ROOT / top-level-item | 変更しない | 変更しない |
修正版スクリプト
MODEがparentなら1階層上、rootならプロジェクトの最上階層へ移動します。
選択数は1〜100アイテムです。
/* Project-panel hierarchy only. Parent/root and Undo tested in AE 26.5 on Windows, 2026-10-14. */
(function () {
var MODE = "parent"; // parent: one level up / root: project root
var project = app.project;
if (!project || (MODE !== "parent" && MODE !== "root")) { alert("プロジェクトとMODEを確認してください。"); return; }
var items = project.selection.slice(0), jobs = [], skipped = 0;
if (!items.length || items.length > 100) { alert("1〜100アイテムを選択してください。"); return; }
// Capture ALL destinations before moving a selected parent folder.
for (var i = 0; i < items.length; i++) {
var item = items[i], parent = item.parentFolder;
if (item === project.rootFolder || parent === project.rootFolder) { skipped++; continue; }
var target = MODE === "root" ? project.rootFolder : parent.parentFolder;
if (!(target instanceof FolderItem) || target === item) { alert("移動先を確認できないため、変更せずに中止しました。"); return; }
jobs.push({item:item,target:target});
}
if (!jobs.length) { alert("対象は既にルート階層です。変更しません。"); return; }
app.beginUndoGroup("選択アイテムの階層を移動");
try {
for (var j = 0; j < jobs.length; j++) jobs[j].item.parentFolder = jobs[j].target;
alert(jobs.length + "アイテムを移動しました。ルート階層の" + skipped + "アイテムは変更していません。");
} catch (error) { alert("一部の移動が残る場合があります。編集メニューで取り消して確認してください。\n" + error.toString()); }
finally { app.endUndoGroup(); }
}());
コードをUTF-8のテキストファイルに保存して拡張子を.jsxにします。
After Effectsの「ファイル」→「スクリプト」→「スクリプトファイルを実行」から選択してください。
スクリプトの常設インストールは必要ありません。
練習フォルダで操作と結果を確認する
プロジェクトパネルにouterフォルダ、その中にnestedフォルダ、その中に練習用のPNG素材childを用意します。
プロジェクトを別名保存してください。
nestedとchildを同時に選択し、MODEをparentにして実行します。
nestedは最上階層、childはouter内へ移ることを確認してください。
親だけ、子だけ、親子同時、ルート階層のアイテムだけを選ぶ場合も試し、成功件数と所在を照合します。
コンポの素材参照と画像が維持されているかも確認します。
撮影した画面の例です。
実行前は、フォルダー「Outer17799」の中にフォルダー「Nested17799」があり、その中にPicked17799.psdとStay17799.psdが入っています。
Nested17799とPicked17799.psdを同時に選びました。

実行後は、Nested17799が最上階層へ、Picked17799.psdがOuter17799の中へ移りました。
選ばなかったStay17799.psdは、Nested17799の中に残っています。

親フォルダーと子素材を同時に選んでも、それぞれ1階層上へ移っています。
コンポのレイヤー名とプレビューは、移動の前後で同じでした。
この例の素材はPSDで、本文の練習のPNGとは形式が違います。
Windowsでparentとrootを比較
2026年10月14日、Windows 11 Pro(10.0.26200)・After Effects 26.5(Build 89、日本語)で検証しました。outerの中にnestedを作り、nested内へ自作PNGのchildとJPGのstay(各200×200)を入れました。最上階層にHierarchy_Test(960×540、30fps、2秒)を作り、画像2枚を配置して練習用AEPを保存しています。
nested・child・Hierarchy_Testの3項目を同時選択し、本文コードをMODE = “parent”で実行しました。結果は移動2件、ルート階層の変更なし1件です。nestedは最上階層へ、childはouter内へ移りました。未選択のstayはnested内に残り、Hierarchy_Testは元の最上階層のままでした。
ダイアログを閉じてCtrl+Zを1回押すと、nestedはouter内へ、childはnested内へ戻りました。親フォルダーを移動する前の階層が復元されています。
同じ3項目を選択した状態で、MODEだけをrootに変更して実行しました。こちらも移動2件、変更なし1件ですが、nestedとchildの両方が最上階層へ移ります。parentでchildがouter内に残る結果とは異なります。未選択のstayはnested内のままです。

parentとrootの実行前後で、2枚の素材名・参照ファイルのパスと、コンポの各レイヤーの参照元IDは変わりませんでした。0秒を書き出したPNGは、移動前・parent移動後・root移動後の3枚で全画素が一致しました。確認したのはこの静止画2枚の参照と表示です。
root実行後に同じ選択のまま再実行すると、「対象は既にルート階層です。変更しません」と表示され、所在は変わりませんでした。ダイアログを閉じてCtrl+Zを1回押すと、その前のroot移動が取り消され、outer/nested/childという元の階層へ戻りました。
今回確認した選択は親子とルートコンポの3項目です。100件の上限付近、大量の入れ子、欠落素材、プロキシ、動画、途中例外からの復旧、Mac・他バージョンは未検証です。本文コードの件数制限は、すべてのプロジェクトでの復旧や処理性能を保証するものではありません。
戻し方とエラー時の切り分け
移動後は「編集」メニューで直前の処理を1回取り消し、nestedとchildが元の階層へ戻るか照合します。
期待どおりでなければ別名保存したプロジェクトを開き直してください。
ルート階層だけを選択した場合は、既に最上階層なので変更しません。
MODEの誤記や選択数の超過も、変更前に中止します。
途中で例外が起きると一部の移動が残る場合があります。
取り消して対象すべての所在を確認してください。
Undoグループはfinallyで明示的に閉じます。
API資料では単一グループはスクリプト終了時に自動で閉じるため、旧コードの未選択時に明示的endがないことだけを実機のUndo故障とは扱いません。
参考資料と関連記事
Item.parentFolder、Undoグループを参照しました。
資料確認日:2026年10月3日。
API資料はコミュニティ管理のAfter Effects Scripting Guideで、Adobe公式のスクリプト実行方法も参照しました。
関連記事
素材移動・分類・選択・新規作成・ディスクへの保存は変更範囲が異なります。
GitHubの旧実装は本稿の修正版とは同期していません。





