サーバーサイド JavaScript について
学習の目的
この単元を完了すると、次のことができるようになります。
- サーバーサイド JavaScript (SSJS) の基本事項と構文を確認する。
- SSJS のコアライブラリとプラットフォームライブラリを使用する状況を認識する。
- SSJS の関数と演算子を実装する。
- SSJS の例やベストプラクティスに従う。
Marketing Cloud Engagement には AMPscript にまとめられたプログラミング言語がありますが、時としてプラットフォームとやりとりするまったく新しい方法を学ぶのが煩わしいことがあります。開発者がすぐ着手できるように、Marketing Cloud Engagement にはサーバーサイド JavaScript (SSJS) も用意されています。この構文と形式は Web 開発者にとって見慣れたものですが、Marketing Cloud Engagement ではこの言語が特に Marketing Cloud Engagement のアクティビティで機能するようにカスタマイズされています。
これらの関数によって Marketing Cloud Engagement のアクティビティにアクセスできるだけでなく、AMPscript には存在しない機能も使用できるようになります。
- SSJS では配列を使用できます。
- SSJS では EVAL 関数を使用できます。
- SSJS は、try catch ブロックなど、高度な例外を処理します。
詳しい説明に入る前に、SSJS は外部の JavaScript ライブラリと連動せず、また、開発者が DOM を操作できない点を覚えておいてください。
SSJS の構文とパーソナライズ文字列
SSJS は、次の例のとおり、Marketing Cloud Engagement にコードブロックとして表示されます。
<script runat=server language="JavaScript"> [Insert JavaScript Here] </script>
また、<script runat=server>
を使用してブロックを開くと、この処理全体が簡素化されます。
SSJS には、各種のソースから値を挿入するパーソナライズ文字列もあります。
- ctrl:field — リストや送信可能データエクステンションから取り込む購読者属性やシステム属性
- ctrl:var — 変数
- ctrl:eval — 関数と SSJS コード式
たとえば、次のような例があります。
連絡先の氏名をランディングページに取り込む場合は、次の例を使用できます。
<ctrl:field name=FullName />
この例は、contactZIP 変数 (値が存在しない場合はデフォルト値) とその数値の形式を返します。
<ctrl:var name=contactZIP default=46201 format=g />
変数値を大文字にする場合は、次のような関数を使用できます。
<ctrl:eval language=javascript default=none format=G>MyVal.toUpper()</ctrl:eval>
SSJS ライブラリ
SSJS には 2 種類のライブラリがあり、両者には重複している部分があります。どちらも標準の JSON と JavaScript 機能を使用できるようにするものですが、使用する状況が異なります。どちらを使用すればよいのかはどうすればわかるのでしょうか? この質問の答えは簡単です。
- SSJS をメールや SMS メッセージに含める場合は、プラットフォームライブラリを使用します。
- ランディングページやアプリケーションを構築している場合は、コアライブラリを使用します。
プラットフォームの関数は AMPscript の関数とよく似ていますが、常に先頭に Platform というプレフィックスが付きます。それ以外は、AMPscript と同様のタスクを実行できます。
- アカウント情報を取得または変更する。
- アカウントユーザーとやりとりする。
- コンテンツ領域を操作する。
- データエクステンション情報を追加、取得、削除、更新する。
- 日時関数を実行する。
- メールメッセージやトリガーによる送信を作成して送信する。
- 購読者情報を作成、取得、更新、削除する。
- HTTP の関数や情報を操作する。
- 各種のユーティリティ関数や評価関数を使用する。
SSJS は次のメソッドもサポートしています。
メソッド名 |
機能 |
追加 |
API オブジェクトで SOAP API の作成メソッドを呼び出します。 |
削除 |
API オブジェクトで SOAP API の削除メソッドを呼び出します。 |
更新 |
API オブジェクトで SOAP API の更新メソッドを呼び出します。 |
取得 |
API オブジェクトで SOAP API の取得メソッドを呼び出します。 |
次は、SSJS を使用してデータを取得する方法を見てみましょう。この関数は、前の単元の AMPscript の例と同じ場所からデータを取り込みます。
<script runat="server"> var dataRows = Platform.Function.LookupRows('Purchases','MemberID',memID); </script>
では、この関数を拡大して、メールに次の行を書き込みます。
<script runat="server"> var dataRows = Platform.Function.LookupRows('CustomerData','Company','exampleCompany'); if(dataRows && dataRows.length > 0) { for(var i=0; i<dataRows.length; i++) { Platform.Response.Write(dataRows[i]["Email"]); } } </script>
メールメッセージにさらなるコンテンツを追加する場合は、この例に示すキー値など、数種類の方法でコンテンツ領域を取り込むことができます。
<script runat="server"> var content = Platform.Function.ContentBlockByKey("myExternalKey","impressionRegion",false,"defaultContentHere"); </script>
別のパラメーターを使用すれば、コンテンツ領域にインプレッション領域を指定することや、エラーが発生したときに挿入コールを停止するかどうかを選択すること、特定のコンテンツ領域が見つからない場合に一定のデフォルトのコンテンツを挿入することなどができます。
次は、ガイドテンプレート言語 (GTL) を詳しく見ていきます。