After Effectsでレイヤーの繋ぎ目をきれいに調整したいときの解決法です。
配置したシーケンスレイヤーの重なりを調整するスクリプトです。
修正版は選択レイヤーをタイムラインの上から順に扱い、次の選択レイヤーの開始へ重なりを切り詰めます。
未選択レイヤーを残して重なりを切る練習
練習コンポジションを別名保存し、タイムラインの1番と3番のレイヤーを選択します。
1番を0〜5秒、3番を3〜6秒にし、未選択の2番の時刻も記録します。
下のコードをoverlap.jsxとして保存し、対象のコンポジションで「ファイル」→「スクリプト」→「スクリプトファイルを実行」から実行します。
選択したレイヤーをタイムラインの上から順に扱い、1番のアウトポイントを次の選択レイヤーである3番のインポイントへ切り詰めます。
期待する区間は1番が0〜3秒、3番が3〜6秒で、未選択の2番の時刻は変わりません。
クリックした順番や未選択の隣接レイヤーは参照しません。
この例は重なりを切る用途で、隙間を埋めて素材を延長する処理はしません。
2枚未満、変更対象のロック、終了が開始以前になる組み合わせ、延長が必要な組み合わせは変更前に止めます。
Undo処理はfinallyで1回だけ閉じますが、処理中の例外で変更が途中まで進む場合はあります。
例外の後に別方向の変更を試す処理は行わず、Ctrl+Z/Command+Zか元コピーで復元します。
| 確認すること | 期待する結果 | 違ったとき |
|---|---|---|
| 1番と3番を選択 | 1番のoutが3秒 | タイムラインの番号を確認 |
| 2番を未選択 | 元のin/outを維持 | 対象の選択を確認 |
| 隙間を埋める必要あり | 変更前に停止 | 素材を延ばす操作は別途確認 |
2026年10月3日にLayer・CompItem・ApplicationのAPI参照を照合し、ローカルのJavaScriptで境界と選択条件を検証しましたが、AE実機でのプロパティ連動・表示・取り消しは未検証です。
選択したレイヤーの繋ぎ目の重なりを調整するスクリプト
(function () {
var comp = app.project && app.project.activeItem;
if (!(comp instanceof CompItem) || comp.selectedLayers.length < 2) {
alert("Open a composition and select at least two layers."); return;
}
var layers = [], plans = [], i;
for (i = 0; i < comp.selectedLayers.length; i++) { layers.push(comp.selectedLayers[i]); }
layers.sort(function (a, b) { return a.index - b.index; });
for (i = 0; i < layers.length - 1; i++) {
var layer = layers[i], end = layers[i + 1].inPoint;
if (layer.locked || !isFinite(end) || !isFinite(layer.inPoint) ||
!isFinite(layer.outPoint) || end <= layer.inPoint ||
end > layer.outPoint || Math.abs(end) > 10800) {
alert("Only overlapping, unlocked selected layers can be trimmed. Nothing changed."); return;
}
plans.push({layer:layer, end:end});
}
app.beginUndoGroup("Trim overlap of selected layers");
try {
for (i = 0; i < plans.length; i++) { plans[i].layer.outPoint = plans[i].end; }
} finally { app.endUndoGroup(); }
})();
After Effectsのほかの操作やテクニックは、まとめ記事から確認できます。

以前の実装は、GitHubのMOTOKI-LLC/cg-method-codeを参考にできますが、本稿の修正版とは異なります。
レイヤーやテキストを整列・配置するスクリプトは、ほかにも紹介しています。




