プロジェクトパネルで選択した素材やフォルダを、実行前の所在を基準に1階層上へ移動するスクリプトです。
ディスク上のファイルは移動しません。
コードはローカルのAPI模擬テストで検証しています。
AEでの画面・取り消し・素材参照の維持は未確認のため、実案件の前に別名保存した練習プロジェクトで確認してください。
親フォルダと子素材を同時に選ぶ場合
旧コードは移動しながら次の移動先を調べていました。
親フォルダを先に移すと、その中の子素材の移動先も変わるため、選択順によって結果が異なります。
修正版は、全選択アイテムの移動先を先に保存してから移動します。
親と子を同時選択しても、それぞれ実行前の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. Native AE validation pending. */
(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内へ移ることを確認してください。
親だけ、子だけ、親子同時、ルート階層のアイテムだけを選ぶ場合も試し、成功件数と所在を照合します。
コンポの素材参照と画像が維持されているかも確認します。
戻し方とエラー時の切り分け
移動後は「編集」メニューで直前の処理を1回取り消し、nestedとchildが元の階層へ戻るか照合します。
期待どおりでなければ別名保存したプロジェクトを開き直してください。
ルート階層だけを選択した場合は、既に最上階層なので変更しません。
MODEの誤記や選択数の超過も、変更前に中止します。
途中で例外が起きると一部の移動が残る場合があります。
取り消して対象すべての所在を確認してください。
Undoグループはfinallyで明示的に閉じます。
API資料では単一グループはスクリプト終了時に自動で閉じるため、旧コードの未選択時に明示的endがないことだけを実機のUndo故障とは扱いません。
参考資料と関連記事
Item.parentFolder、Undoグループを参照しました。
資料確認日:2026年10月3日。
API資料はコミュニティ管理のAfter Effects Scripting Guideで、Adobe公式のスクリプト実行方法も参照しました。
関連記事
素材移動・分類・選択・新規作成・ディスクへの保存は変更範囲が異なります。
GitHubの旧実装は本稿の修正版とは同期していません。





