所有のffxを選択した2枚へ1回だけ適用する練習
2026年10月3日確認:applyPresetは呼び出したレイヤー1枚ではなく、同じコンポジションで選択されているレイヤーへ適用するAPIです。
別名保存した練習プロジェクトで、所有のソリッドに回転のキーなどを付け、アニメーションプリセットとしてpractice.ffxを保存します。
別の練習コンポジションでソリッド2枚を選択し、現在時刻と元のキー数を記録してください。
下のコードをapply-preset.jsxとしてUTF-8で保存し、「ファイル」→「スクリプト」→「スクリプトファイルを実行」から実行して所有のffxを選びます。
2枚の選択を保ったままapplyPresetを1回だけ呼び出します。
選択レイヤーごとのループで繰り返すと、同じ選択範囲へ重複して適用するため、この例では繰り返しません。
無選択では実行せず、ファイルがない・拡張子が違う・ダイアログでキャンセルした場合にも適用しません。
ダイアログを閉じた後で選択やアクティブなコンポジションが変わっていれば停止します。
期待するキーの種類と時刻は所有のffxの内容に依存するため、2枚のタイムラインを開いて確認します。
エラーの後を含め、Ctrl+Z/Command+Zまたは元コピーで元のキー数・値・選択へ戻るか確認してください。
コードはJavaScriptの構文・模擬APIと保存したAPI資料で確認していますが、AE本体での適用・映像の一致・Undoの実行確認は未完了です。
| 入力・条件 | 操作・結果 | 確認する点 |
|---|---|---|
| 2枚を選択 | applyPresetを1回 | 選択範囲へ適用 |
| 無選択・キャンセル | 適用しない | 元のキーを保持 |
| 結果と戻し方 | ffxの内容を照合 | 元コピーと比較 |
仕様の照合には、コミュニティで保守されているLayer.applyPreset API参照を参照しました。
アニメーションプリセットをスクリプトから呼び出したい。
ランチャーなどから手軽に適用できるよう、アニメーションプリセットをスクリプトから読み込んで実行する手順を解説します。
アニメーションプリセットをスクリプト化する方法
(function () {
var comp = app.project && app.project.activeItem;
if (!(comp instanceof CompItem)) { alert("Open a composition."); return; }
var layers = comp.selectedLayers, saved = [], i;
if (!layers.length) { alert("Select at least one layer."); return; }
for (i = 0; i < layers.length; i++) {
if (layers[i].locked) { alert("Unlock the selected layers first."); return; }
saved.push(layers[i]);
}
var preset = File.openDialog("Choose your practice .ffx preset");
if (!preset) { return; }
if (!preset.exists || !/\.ffx$/i.test(preset.name)) { alert("Choose an existing .ffx file."); return; }
layers = comp.selectedLayers;
if (app.project.activeItem !== comp || layers.length !== saved.length) { alert("Selection changed."); return; }
for (i = 0; i < layers.length; i++) {
if (layers[i] !== saved[i] || layers[i].locked) { alert("Selection changed."); return; }
}
app.beginUndoGroup("Apply one practice preset");
try {
// applyPreset acts on all selected layers in this comp. Call it once.
saved[0].applyPreset(preset);
} catch (error) {
alert("Stopped: " + error.toString() + "\nUndo or reopen your practice copy.");
} finally { app.endUndoGroup(); }
})();
パス内のバックスラッシュ(円記号)は、環境や記述方法によってエスケープ(2重)が必要になる場合があります。
頻繁に使用するプリセットやエクスプレッションは、スクリプト化してランチャーに登録しておくと作業を効率化できます。
After Effectsに関するほかの操作手順は、まとめ記事から確認できます。

旧実装の参考コードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
エクスプレッションの記述方法やスクリプト化に関連する記事もあわせて参照してください。




