エクスプレッションが返す数値を確認したいときは、確認用テキストレイヤーに表示できます。複数のコンポジションで文字や色を共通管理する場合は、JSONファイルをフッテージとして読み込み、sourceDataから値を参照する方法があります。
このページでは、現行のJavaScriptエクスプレッションエンジン向けの方法と、旧記事のレガシー手順を分けています。2026年10月3日にAdobeの公式資料を確認しました。以下のコードは仕様に基づく記述例であり、今回AE本体では動作確認していません。
最初に確認する適用先とエンジン
エクスプレッションはプロパティのストップウォッチをAltクリック(MacはOptionクリック)して入力します。.jsxを「スクリプトファイルを実行」から動かす操作とは別です。「プロジェクト設定」の「エクスプレッション」で使用するエンジンを確認してください。
旧記事の$.evalFile()は、JavaScriptエクスプレッションエンジンで未対応です。エラーを避ける目的で既存プロジェクトのエンジンを無条件に切り替えると、ほかの式にも影響します。旧手順を再現する場合は、複製したプロジェクトで対象条件を確認します。
位置や時刻を確認用テキストに表示する
確認したいレイヤーを「対象」と命名し、別にテキストレイヤーを作ります。確認用テキストの「ソーステキスト」に次の式を貼ります。位置そのものを変更する式ではありません。
var pos = thisComp.layer("対象").transform.position;
"時刻: " + time.toFixed(2) + " s\n" +
"X: " + pos[0].toFixed(1) + " / Y: " + pos[1].toFixed(1);タイムラインの時刻を動かし、対象レイヤーの位置と表示値を照合します。2D位置のX・Yだけを表示する例です。3D位置のZも調べるときはpos[2]を追加します。確認が終わったら確認用テキストを削除するか、式を無効にします。
JSONから文字を参照する
次の内容をUTF-8のlabels.jsonとして保存し、After Effectsの「ファイル」→「読み込み」→「ファイル」から読み込みます。JSONにはコメントや末尾の余分なカンマを入れません。配列の番号は0から始まります。
[
{
"text": "おはよう",
"color": [
1,
0,
0,
1
]
},
{
"text": "こんにちは",
"color": [
0,
1,
0,
1
]
},
{
"text": "おやすみ",
"color": [
0,
0,
1,
1
]
}
]テキストレイヤーの「ソーステキスト」に次の式を貼ります。プロジェクトパネルでのフッテージ名がlabels.jsonであることを確認してください。
var data = footage("labels.json").sourceData;
String(data[0].text);この例で参照する文字は「おはよう」です。2番目ならdata[1].text、3番目ならdata[2].textとします。ファイルパスを式に直接埋め込まず、読み込んだフッテージを名前で参照します。素材を移動した場合はJSONのリンクも確認します。
スライダーで文字を切り替える
ヌルレイヤーを作って名前を「制御」にし、スライダー制御を追加します。エフェクト名を「番号」に変更して、値を1・2・3で切り替えます。テキストレイヤーの「ソーステキスト」に次の式を貼ってください。
var data = footage("labels.json").sourceData;
var n = Math.round(thisComp.layer("制御").effect("番号")(1));
var index = Math.max(0, Math.min(data.length - 1, n - 1));
String(data[index].text);小数は四捨五入し、配列の範囲外にならないよう端の項目へ収めます。今回のJSONは空でない配列で、各項目にtextがあることを前提にしています。データ構造を変える場合は式も合わせて修正します。
コンポジション名や色へ応用する
末尾が_1・_2・_3のコンポジション名から文字を切り替える場合は、ソーステキストに次の式を使います。途中にもアンダーバーがあってよいよう、最後の要素だけを参照します。末尾が数値でなければ最初の文字を返します。
var data = footage("labels.json").sourceData;
var parts = thisComp.name.split("_");
var n = Number(parts[parts.length - 1]);
var index = isNaN(n) ? 0 : Math.max(0, Math.min(data.length - 1, Math.round(n) - 1));
String(data[index].text);色は0〜1のRGBA配列としてJSONに入れています。シェイプの塗りの「カラー」など、RGBAを受け取るプロパティに次の式を貼ります。ソーステキストにこの色配列を貼る例ではありません。
var data = footage("labels.json").sourceData;
data[0].color;表示が変わらない・エラーになるとき
- フッテージが見つからない:プロジェクトパネルの名前とlabels.jsonの記述を照合する。
- undefinedが表示される:配列番号とtext・colorのキー名を確認する。
- JSONを読み込めない:引用符、カンマ、配列・オブジェクトの括弧を確認する。
- 文字の切り替えが動かない:「制御」レイヤーと「番号」エフェクトの名前、入力先がソーステキストであることを確認する。
- ファイルの変更が反映されない:変更を保存したうえで、JSONフッテージの再読み込み・置き換えと参照先を確認する。
Adobe Media EncoderやPremiereとの受け渡し、ファイルの収集を行うときは、Adobeの案内に従ってデータソースをコンポジションのタイムラインにも追加します。参照だけがあるJSONを納品から漏らさないよう確認してください。
旧記事のESTK・外部ファイル参照について
旧記事はExtendScript Toolkit(ESTK)や隠し環境設定の編集、$.writeln()・$.evalFile()を使う方法を紹介していました。現行環境での再現は未確認です。旧環境の設定ファイルに書かれた行番号を、現在の設定ファイルの編集位置として使わないでください。
旧記事の外部ファイル参照は、文字データの読み込みに加えて外部コードの実行を含みます。このページのJSON例とは処理が異なります。以前の式を保守する必要がある場合は、エンジンと元ファイルの内容を確定してから、データの参照へ置き換えられるか判断します。



旧記事の参考出典:エクスプレッションの外部ファイル化。
参考資料と関連する操作
Adobe:エンジンごとの構文差と未対応API、Adobe:データ駆動型アニメーション、Adobe:エクスプレッション言語リファレンス。
エクスプレッションエラーの直し方、チェックボックスで表示を切り替える方法、コンポジション名の数字を参照する方法、使い方まとめから関連する操作も確認できます。
