[v8 にも適用されます]{class="badge positive" title="Campaign v8 にも適用されます"}
A/B テスト:スクリプトの作成 step-5--creating-the-script
その他の母集団用の配信コンテンツを、スクリプトで割り出します。このスクリプトでは、最も開封率の高い配信について情報を復元し、その内容を最終の配信にコピーします。
スクリプトの例 example-of-a-script
次のスクリプトをターゲティングワークフローでそのまま使用できます。詳しくは、この節を参照してください。
// query the database to find the winner (best open rate)
var winner = xtk.queryDef.create(
<queryDef schema="nms:delivery" operation="get">
<select>
<node expr="@id"/>
<node expr="@label"/>
<node expr="[@operation-id]"/>
<node expr="[@workflow-id]"/>
</select>
<where>
<condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/>
</where>
<orderBy>
<node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/>
</orderBy>
</queryDef>).ExecuteQuery()
// create a new delivery object and initialize it by doing a copy of
// the winner delivery
var delivery = nms.delivery.create()
delivery.Duplicate("nms:delivery|" + winner.@id)
// append 'final' to the delivery label
delivery.label = winner.@label + " final"
// link the delivery to the operation to make sure it will be displayed in
// the campaign dashboard. This attribute needs to be set manually here since
// the Duplicate() method has reset it to its default value => 0
delivery.operation_id = winner.@["operation-id"]
delivery.workflow_id = winner.@["workflow-id"]
// adjust some delivery parameters to make it compatible with the
// "Prepare and start" option selected in the Delivery tab of this activity
delivery.scheduling.validationMode = "manual"
delivery.scheduling.delayed = 0
// save the delivery in database
delivery.save()
// store the new delivery Id in event variables
vars.deliveryId = delivery.id
このスクリプトの詳細については、こちらの節を参照してください。
実装 implementation
-
「JavaScript コード」アクティビティを開きます。
-
スクリプトの例で提供されたスクリプトを JavaScript コード ウィンドウにコピーします。
-
「ラベル」フィールドに、次のようなスクリプト名を入力します。
code language-none <%= vars.deliveryId %>
-
「JavaScript コード」アクティビティを閉じます。
-
ワークフローの保存
スクリプトの詳細 details-of-the-script
このセクションでは、スクリプトの様々な機能とその動作モードについて詳しく説明します。
-
まずはじめは、クエリです。queryDef コマンドでは、ターゲティングワークフローを実行して作成した配信を「NmsDelivery」テーブルから復元することや、それらの配信を推定の開封率に応じて並べ替えることでき、開封率の高い配信の情報が復元されます。
code language-none // query the database to find the winner (best open rate) var winner = xtk.queryDef.create( <queryDef schema="nms:delivery" operation="get"> <select> <node expr="@id"/> <node expr="@label"/> <node expr="[@operation-id]"/> </select> <where> <condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/> </where> <orderBy> <node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/> </orderBy> </queryDef>).ExecuteQuery()
-
開封率の最も高い配信を複製します。
code language-none // create a new delivery object and initialize it by doing a copy of // the winner delivery var delivery = nms.delivery.create() delivery.Duplicate("nms:delivery|" + winner.@id)
-
複製した配信のラベルを変更し、"final" という単語を追加します。
code language-none // append 'final' to the delivery label delivery.label = winner.@label + " final"
-
キャンペーンのダッシュボードに配信をコピーします。
code language-none // link the delivery to the operation to make sure it will be displayed in // the campaign dashboard. This attribute needs to be set manually here since // the Duplicate() method has reset it to its default value => 0 delivery.operation_id = winner.@["operation-id"] delivery.workflow_id = winner.@["workflow-id"]
code language-none // adjust some delivery parameters to make it compatible with the // "Prepare and start" option selected in the Delivery tab of this activity delivery.scheduling.validationMode = "manual" delivery.scheduling.delayed = 0
-
配信をデータベースに保存します。
code language-none // save the delivery in database delivery.save()
-
複製した配信の一意の識別子をワークフロー変数として保存します。
code language-none // store the new delivery Id in event variables vars.deliveryId = delivery.id
その他の選択基準 other-selection-criteria
上記の例では、メールの開封率に応じて配信するコンテンツを選択することができます。次のようなその他の配信固有の指標を基にすることが可能です。
- 最も高いクリックスルー率:
[indicators/@recipientClickRatio]
- 最も高い反応率(メールの開封やメッセージのクリック):
[indicators/@reactivity]
- 最も低いクレーム率:
[indicators/@refusedRatio]
(sortDesc 属性には、値 false を使用) - 最も高いコンバージョン率:
[indicators/@transactionRatio]
- メッセージの受信後に訪問のあったページの数:
[indicators/@totalWebPage]
- 最も低い購読解除率:
[indicators/@optOutRatio]
- トランザクション金額:
[indicators/@amount]
.
これで、最終配信を定義できます。詳細情報。