Amazonで商品を見るセール会場へ

After Effectsスクリプトの書き方入門|選択レイヤーを動かす最小コードとデバッグ

After Effectsのスクリプトは、JavaScriptを拡張したExtendScriptで書き、拡張子を.jsxにしたテキストファイルとして保存します。

最初は「開いているコンポジションで、選んだレイヤーを右へ動かす」くらいの短いコードから始めると、プロジェクト・コンポジション・レイヤー・プロパティのたどり方がつかめます。

書いたファイルは、ファイル/スクリプト/スクリプトファイルを実行で、その場で試せます。

この記事では、選択レイヤーを動かす最小のコード、1行ずつの意味、実行の場所、値やキーフレームの変え方、デバッグの方法を、Adobeのヘルプと、Adobeが案内しているAfter Effects スクリプティングガイドをもとにまとめました(2026年11月1日に確認)。

配布されているスクリプトの入れ方はスクリプトの導入・実行方法にまとめています。

目次

用意するもの

スクロールできます
もの使い道
テキストエディターコードを書いて、拡張子を.jsxにして保存する
After Effects スクリプティングガイド使えるオブジェクトと書き方を調べる(ae-scripting.docsforadobe.dev)
Visual Studio Code と ExtendScript Debuggerブレークポイントを置いて止めながら確かめる(Adobe製の無料の拡張機能)

Adobeのヘルプは、スクリプトで使える機能の詳細をAfter Effects スクリプティングガイドで調べるよう案内しています(Adobe:After Effects のスクリプト)。

スポンサーリンク

選択レイヤーを右へ動かす最小のコード

開いているコンポジションで選んだレイヤーを、位置のX方向に100ピクセル動かすコードです。

(function () {
    var comp = app.project.activeItem;
    if (!(comp instanceof CompItem)) {
        alert("Open a composition first.");
        return;
    }
    var layers = comp.selectedLayers;
    if (layers.length === 0) {
        alert("Select at least one layer.");
        return;
    }
    app.beginUndoGroup("Move selected layers");
    var moved = 0;
    for (var i = 0; i < layers.length; i++) {
        var layer = layers[i];
        if (layer.locked || !layer.hasVideo) continue;
        var pos = layer.transform.position;
        if (pos.numKeys > 0 || pos.dimensionsSeparated) continue;
        var v = pos.value;
        v[0] = v[0] + 100;
        pos.setValue(v);
        moved++;
    }
    app.endUndoGroup();
    alert("Moved: " + moved + " / " + layers.length);
})();

スクリプティングガイドに載っている書き方だけで組んだ最小の例で、どの環境でも動くことを確かめたものではありません。

試すときは、プロジェクトを別名で保存してからにしてください。

1行ずつの意味

スクロールできます
コードしていることガイドの記載
(function () { … })();変数を外に漏らさないよう、全体を関数に包んで1回だけ実行する―
app.project.activeItemいま作業の対象になっているアイテムを取る何も選んでいないときや複数選んでいるときは null
instanceof CompItem取れたものがコンポジションか確かめるProject のページの例と同じ形
comp.selectedLayers選んでいるレイヤーを配列で取る0から数える配列で読み取り専用
app.beginUndoGroup(“…”)ここからの操作を、取り消し1回でまとめて戻せるようにする文字は編集メニューの取り消しの名前になる
layer.locked・layer.hasVideoロックしたレイヤーと、ビデオスイッチ(目のアイコン)の無いレイヤーを飛ばすLayer オブジェクト
layer.transform.positionトランスフォームの位置プロパティを取るPropertyBase のページの例と同じ書き方
pos.numKeys・pos.dimensionsSeparatedキーフレームがある位置と、XとYに分けた位置を飛ばすnumKeys が0ならキーフレームなし
pos.value・pos.setValue(v)今の値を読み、Xに100を足して書き戻すsetValue はキーフレームの無いプロパティ用
app.endUndoGroup()取り消しのまとまりを閉じるbeginUndoGroup と組で使う

キーフレームの付いたプロパティにsetValueを使うと、例外が起きてエラーが表示されます(スクリプティングガイド:Property)。

このコードでは、そうしたレイヤーを先に飛ばしています。

書いたスクリプトを実行する場所

スクロールできます
方法操作向いているとき
スクリプトファイルを実行ファイル/スクリプト/スクリプトファイルを実行で.jsxを選ぶ書いている途中で何度も試す
Scripts フォルダーに置くAfter Effectsを再起動すると、ファイル/スクリプトに名前が出るできあがったものを毎日使う
最近使ったスクリプトを再実行Ctrl+Alt+Shift+D(macOSはCmd+Option+Shift+D)直したものをすぐ試し直す
コマンドラインWindowsで afterfx -r とスクリプトのフルパスを指定キーボードの付属ソフトでショートカットに割り当てる

実行中のスクリプトはEscキーで止められます(Adobe:After Effects のスクリプト)。

Scripts フォルダーの場所とパネルとしての置き方は導入・実行方法の記事、ボタンから呼び出したいときはスクリプトランチャーの記事が参考になります。

値やキーフレームを変える書き方に広げる

最小のコードの「位置」を別のプロパティに変えれば、ほかの値も同じ形で変えられます。

たとえば不透明度は、スクリプティングガイドの例のとおり myLayer.opacity で取り、setValue(50) で50%にします。

キーフレームを打つときは setValueAtTime を使い、時間(秒)と値を渡します。

var myProperty = layer.rotation;
myProperty.setValueAtTime(0, 0);
myProperty.setValueAtTime(5, 90);

この例は、0秒で回転0度、5秒で90度のキーフレームを打ちます(スクリプティングガイド:setValueAtTime)。

エクスプレッションをスクリプトから設定する例はエクスプレッションをスクリプト化する方法にあります。

デバッグのしかた

スクロールできます
方法わかること
alert(値)その時点の値を画面に出して止める。いちばん手軽
$.writeln(値)JavaScript コンソールに文字を書き出す
try … catchエラーの内容を受け取って表示する
ExtendScript Debuggerブレークポイントで止め、変数を見ながら1行ずつ進める
try {
    // ここに処理を書く
} catch (e) {
    alert(e.toString());
}

ExtendScript Debugger は、Visual Studio Code の拡張機能としてAdobeが公開しています(Visual Studio Marketplace)。

Evaluate Script in Host...で、開いているファイルを起動中のAfter Effectsに送って実行できます。

止めながら確かめるときは、実行とデバッグから ExtendScript を選び、対象のアプリを選びます。

ExtendScript Toolkit を同じアプリにつないでいると、この拡張機能が正しく動かなくなり、アプリの再起動で直ると案内されています。

$.writeln の使い方はJavaScript Tools Guide:Dollar ($) objectにあります。

つまずきやすい所と対処

スクロールできます
つまずき起きること対処
コンポジションを開かずに実行activeItem が null かコンポジション以外になるタイムラインを選んでから実行する
プロジェクトパネルで複数を選んでいるactiveItem が null になる選ぶのを1つにする
キーフレームのある位置に setValue例外が起きてエラーが出るsetValueAtTime を使うか、その位置を飛ばす
selectedLayers を1から数える最初のレイヤーが抜ける0から数える
取り消しのまとまりを作らない取り消しを何度も押さないと戻らないbeginUndoGroup と endUndoGroup で囲む
Scripts フォルダーに置いてもメニューに出ない起動時にしか読み込まれない再起動するか、スクリプトファイルを実行で選ぶ
ファイルに書き出す処理で止まる既定ではファイルへの書き込みとネットワーク通信ができない環境設定/スクリプトとエクスプレッションで「スクリプトによるファイルへの書き込みとネットワークへのアクセスを許可」を選ぶ

「アクセスが拒否されました」と出たときの確かめ方は導入・実行方法の記事にあります。

よくある質問:After Effectsスクリプトの書き方

ExtendScript と JavaScript は同じですか?

ExtendScript は JavaScript を拡張した言語です。

After Effects で使えるオブジェクトと書き方は、スクリプティングガイドで確かめます。

エクスプレッションとは何が違いますか?

スクリプトは、メニューなどから実行して、プロジェクトに一連の操作をさせるものです。

プロパティごとに書くエクスプレッションの書き方はエクスプレッション作成のTIPSにまとめています。

.jsx と .jsxbin は何が違いますか?

Adobeのヘルプでは、ExtendScript のファイルの拡張子は .jsx か .jsxbin とされています。

この記事のコードは、テキストエディターで .jsx として保存します。

配布された .jsxbin の扱いは導入・実行方法の記事にあります。

書いたスクリプトをショートカットで呼べますか?

Windowsでは afterfx -r にスクリプトのパスを付けて呼べるので、キーボードの付属ソフトなどで割り当てられます。

スポンサーリンク

まとめ

After Effectsのスクリプトは ExtendScript で書き、.jsx で保存して、スクリプトファイルを実行で試します。

まずは activeItem → selectedLayers → プロパティ → setValue の順にたどる短いコードを動かし、取り消しのまとまりで囲む形を覚えます。

つまずいたら alert や ExtendScript Debugger で値を確かめ、スクリプティングガイドで書き方を引いてください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

須澤 元貴のアバター 須澤 元貴 代表社員

MOTOKI合同会社 代表社員。
アニメ・映像業界とゲーム業界で、2D・UI・3D・アニメーション制作、映像編集、ツール制作に携わってきました。
現在はWordPressを中心にWebサイトの制作とカスタマイズを手がけています。
著書に『Unity デザイナーズ・バイブル』『Unityゲーム プログラミング・バイブル 2nd Generation』(ボーンデジタル)。
岡山県出身、埼玉県在住。

目次