スクリプト自動化が止まる「あるある」問題
Premiere ProのExtendScript(.jsx)やAfter Effectsのスクリプトで自動化を組んだ経験がある方なら、「突然動かなくなった」「エラーメッセージが意味不明」「特定のプロジェクトだけ失敗する」という状況に一度は直面したことがあるはずです。
せっかく構築した自動化フローが途中で止まると、手動対応が必要になり、自動化のメリットが失われます。本記事では、Premiere Pro・After Effectsのスクリプトで発生しやすいエラーのパターン、デバッグ方法、安定稼働させるためのベストプラクティスを解説します。
Premiere Pro / After Effectsスクリプトで発生しやすいエラー一覧
| エラータイプ | よくある原因 | 対処法の方向性 |
|---|---|---|
| TypeError: undefined | 存在しないプロパティにアクセス、要素が空 | nullチェック・存在確認を追加 |
| RangeError: Index out of range | 配列・コレクションの範囲外アクセス | ループ条件の見直し・境界値チェック |
| Can’t execute script while a modal dialog is open | ダイアログが開いている状態でスクリプト実行 | app.project確認、GUIのスキップ |
| File not found | パスが間違っている・日本語・スペースを含む | フルパスの確認・Fileオブジェクトの使用 |
| After Effects error: rendering error | プラグイン不足・コーデック非対応・メモリ不足 | ログ確認・不要エフェクトの除外・メモリ開放 |
| ExtendScriptのバージョン不一致 | 古いAPIを新しいAEバージョンで使用 | AEのバージョン条件分岐を追加 |
基本的なデバッグツール:ExtendScript Toolkit と VSCode
ExtendScript Toolkit(ESTK)でのデバッグ
ESTKはAdobe ExtendScriptの公式デバッガーです。ブレークポイントを設定し、変数の中身をリアルタイムに確認できます。現在はCS向けの旧ツールですが、基本的なデバッグには今でも使えます。
- ExtendScript Toolkitを起動し、スクリプトファイルを開く
- デバッグしたい行番号の左をクリックしてブレークポイントを設定する
- 「Target Application」でPremiere ProまたはAfter Effectsを選択する
- 「デバッグ(▶)」ボタンでスクリプトを実行する
- ブレークポイントで停止したら、「変数」パネルで各変数の値を確認する
VSCode + ExtendScript Debugger拡張でのデバッグ(推奨)
現代的な開発環境として、Visual Studio Code(VSCode)とAdobe公式の「ExtendScript Debugger」拡張を使う方法が推奨されます。
- VSCodeに「Adobe ExtendScript Debugger」拡張をインストールする
- launch.jsonを設定してPremiere ProまたはAEをデバッグターゲットに指定する
- VSCodeのブレークポイント・ウォッチ変数・コールスタック表示を使ってデバッグする
ログ出力によるデバッグ:$.writeln()とファイルログ
複雑な自動化スクリプトでは、各処理ステップでログを出力することが安定稼働の鍵です。
コンソールへのログ出力
// ESTKのコンソールパネルに出力
$.writeln("処理開始: " + new Date().toString());
$.writeln("対象ファイル: " + targetFile.fsName);
ファイルへのログ出力(本番環境で推奨)
function writeLog(message) {
var logFile = new File("C:/logs/premiere_automation.log");
logFile.open("a"); // 追記モード
logFile.writeln(new Date().toString() + " - " + message);
logFile.close();
}
writeLog("バッチ処理開始");
// 処理内容
writeLog("バッチ処理完了");
エラーハンドリングを実装して安定稼働させる
本番環境で動かすスクリプトには必ずtry-catch文でエラーハンドリングを実装します。エラーが発生しても処理が途中で止まらず、ログに記録して次の処理に進む設計が理想的です。
function processFile(file) {
try {
// ファイル存在チェック
if (!file.exists) {
throw new Error("ファイルが見つかりません: " + file.fsName);
}
// メイン処理
app.project.importFiles([file.fsName]);
writeLog("SUCCESS: " + file.name);
} catch (e) {
// エラーをログに記録して継続
writeLog("ERROR: " + file.name + " - " + e.message);
return false;
}
return true;
}
// メインループ
var files = sourceFolder.getFiles("*.prproj");
var successCount = 0;
for (var i = 0; i < files.length; i++) {
if (processFile(files[i])) successCount++;
}
writeLog("完了: " + successCount + "/" + files.length + " 件成功");
日本語ファイルパスとエンコーディング問題への対処
Windows環境で日本語のファイルパスが含まれる場合、文字化けやFile not foundエラーが頻発します。対処法は以下のとおりです。
- パスを英数字のみにする:最も確実な方法。プロジェクトフォルダーは英数字のパスに統一する
- Fileオブジェクトを使う:文字列でパスを渡すより、
new File(path)を使う方が文字コード変換の問題が軽減される - $.os・$.appVersionでOS確認:Windows/Macで挙動が異なる場合は条件分岐を入れる
バージョン間の互換性問題を回避する
Adobe製品はバージョンアップで機能追加・廃止が行われるため、古いスクリプトが新バージョンで動かなくなることがあります。
// バージョン確認と条件分岐の例
var aeVersion = parseFloat(app.version);
if (aeVersion >= 22.0) {
// CC 2022以降の新API
app.project.renderQueue.items[1].outputModules[1].file = new File(output);
} else {
// 旧バージョン向け処理
app.project.renderQueue.item(1).outputModule(1).file = new File(output);
}
スクリプトの定期メンテナンスチェックリスト
- 月1回:ログファイルを確認してエラーパターンを把握する
- Adobe製品アップデート後:主要スクリプトの動作確認テストを実施する
- 新規プロジェクト追加時:ファイルパス・フォルダー構造がスクリプトの想定と一致しているか確認する
- 定期的に:使用していないスクリプトを整理してメンテナンスコストを下げる
まとめ:安定したスクリプト自動化のために
Premiere ProやAfter Effectsのスクリプト自動化で安定稼働を実現するポイントは、(1)適切なエラーハンドリング、(2)ファイルログの実装、(3)バージョン対応の条件分岐、(4)定期的なメンテナンスの4点に集約されます。
スクリプト自動化の前提となるのは、しっかりしたAdobe製品の環境です。Adobe Creative Cloudのプランページで最新のPremiere ProとAfter Effectsが使えるプランを確認し、自動化ワークフローの構築に挑戦してみてください。

コメント