AMPscript 実行コンテキスト

Marketing Cloud は、ランディングページ、Web コレクト、Smart Capture のコンテンツを処理できます。コンテキストに応じた AMPscript 関数を介してそのコンテンツを呼び出します。関数の実行コンテキストにより、システムがコンテキストを処理する方法が決まります。

Marketing Cloud では、読み取り専用のグローバル変数 @@ExecCtx. で表される、種別および名前ごとの実行コンテキストがサポートされています。システムは、Load 種別と Post 種別を処理します。呼び出しでコンテキストが指定されていない場合はデフォルトの Load になります。特定の実行コンテキストが指定されていないコンテンツはどのようなコンテキストでも処理されます。システムは、すべてのコンテキスト種別に対応します。が、指定された名前のアクティブなコンテンツのスクリプトブロックのみを処理します。たとえば、呼び出し元が Post コンテキスト種別を指定し、Post 種別で実行されるコードのセクションに SaveData という名前のスクリプトブロックが存在する場合、Marketing Cloud はそのブロックのみを処理します。

呼び出し元は、Load または Post (大文字と小文字が区別される文字列値) を @@ExecCtx に設定して、現在の実行コンテキストを指定します。この変数を使用して、次の例のように実行コンテキストに基づいてコンテンツの処理を制御します。

実行コンテキスト名を使用して、コンテンツの処理を制御することもできます。呼び出し元が名前を指定する場合、Marketing Cloud システムはその名前のスクリプトブロックのみを実行します。呼び出し元は、スクリプトの開始区切り記号の直後にスクリプトの名前と種別を設定して、スクリプトブロックレベルでスクリプト種別を指定することもできます。大文字と小文字が区別される文字列値には、単一引用符または二重引用符を使用します。

次の例では、呼び出し元の実行コンテキストが POST に設定されていて、UpdateDate という名前が指定されている場合にのみ UpsertData コマンドが実行されます。

スクリプトブロックは、同じスクリプトブロックセクション内で完了する必要があります。たとえば、スクリプトブロック内の IF または FOR ステートメントは、同じ名前のスクリプトブロック内の ENDIF または NEXT で完了する必要があります。スクリプトブロックが 2 つ以上のスクリプトブロックセクションにまたがる場合、Marketing Cloud は次のエラーメッセージを返します。