本体2
115~
これまでは、safeToRunScriptがtrueである場合の処理を説明してきました。これは、活動中のプロジェクトがあり(レンダリング中でない)、レンダーキューにコンポジションがある場合を想定した構文です。
しかし、プロジェクトが開いていて、レンダーキューにコンポジションを入れ忘れている場合はどうなるのでしょうか?
その場合のプログラムが、if (! safeToRunScript)になります。! safeToRunScriptの冒頭についている!は論理NOTですからsafeToRunScriptが真でない、つまりレンダリングできない状態にありますということを条件として、警告メッセージを出すように指示しています。
if (safeToRunScript) {
var emailCodeFile = new File("email_methods.jsx");
emailCodeFile.open("r");
eval( emailCodeFile.read() );
emailCodeFile.close();
メールの送信設定をするために、ネットワーク担当者が家に帰る前にネットワークへのアクセスをチェックしておきましょう。とScriptには、コメントアウトされた粋な文章が書かれていますね。
var emailCodeFileで、emailCodeFileを定義して、新たなファイルを作成します。
作成したファイルは"email_methods.jsx"になります。newはJavascriptのコンストラクタ(構築する意味)で、new を用いて新たなオブジェクトを生成します。varのような一時的な格納場所を作成する変数とは異なり、新規のファイルやデータを作成することを目的とした関数です。
emailCodeFile.read("r")は、コードファイルを読み取り専用で読み込みます。()内の"r"は、読み取り専用の意味です。
evalメソッドで、JavaScriptに変換します。eval()は文字列を JavaScript の構文と解釈して実行し、その結果を返します。この場合、emailCodeFile.open("r")でを読み込みんだ結果は、単なる文字列です。それをJavaScript の構文として変換して変数email_method.jsxを閉じます。
{
var email_test = new EmailSocket("127.0.0.1");
}
このアドレスは、send()関数を使って実際に送信するものではありません。ネットワークアクセスが可能かどうかをテストします。127.0.0.1は、自分自身を指すlocal.hostと呼ばれるIPアドレスです。これは、自分自身のサービスが動作しているかどうかを確認する場合に利用できます。
email_setup.jsxスクリプトは、ユーザーにセッティングの構築を促します。 もし、まだセッティングを行なっていなければemail_setup.jsxを起動します。そして、セッティングを変更したいのであれば、いつでもemail_setup.jsxを起動することが出来ます。
var settings = app.settings; //変数settingを定義し、現在保存されているセッティング内容を代入する
if ( !settings.haveSetting("Email Settings", "Mail Server") ||
!settings.haveSetting("Email Settings", "Reply-to Address") ||
!settings.haveSetting("Email Settings", "Render Report Recipient"))
haveSetting()は括弧内の引数をみて、中身に何かあればtrueを返し、無ければfalseを返します。 これをboolian値といいます。 この場合、"Email Settings"に"Mail Server"の設定項目が記述されているかどうかを調べています。 if()構文の内容は "Mail Server"、"Reply-to Address"、"Render Report Recipient"のどれかひとつでも 設定項目に未記入のものがあれば{}内を実行しなさいと命令しています。構文中の||は論理演算子の「or」つまり「または」を意味します。
{
var email_setupfile = new File("email_setup.jsx");
email_setupfile.open("r");
eval( email_setupfile.read() );
email_setupfile.close();
}
変数email_setupfileを定義し、新たな"email_setup.jsx"を作成し設定内容を代入しなさいと命令しています。email_setupfileを書き込み可能な状態で開きます。
evalメソッドで、書き込んだ状態を読み込む動作を実行させます。
ややこしい表現ですが、email_setupfile.read()は、書き込みの終わったemail_setupfileをAEに読み込みなさいと命じています。
しかし、現在ここで行なわれている動作は、email_setupfileを開いて、項目を入力している段階でしかありません
もう少し詳しく説明するとまだ変数のままで、完全なファイルに生成されていません。JavaScriptを含んだ文字列を評価して結果を数値などのデータに返します。
これを、完成したemail_setupfileとして認識し、実行させるために現状の変数email_setupfileを文字列から
JavaScriptコードを実行するeval()メソッドを使ってemail_setupfileをAfterEffectsに読み込ませます。
最後にclose()を使って、変数email_method.jsxを閉じます。
これはopen();と対になるコマンドなので必ずclose();でこれで閉める必要があります。