LoginSignup
0
0

More than 1 year has passed since last update.

Adobe Targetの小技集 - ProfileScriptの基本 -

Last updated at Posted at 2023-01-27

Adobe Targetの便利な機能のProfileScriptを使って色々なターゲティングを実現する事は可能です。
しかし、JavaScriptを使ったプログラミングが必要なことであることや、色々な前提知識が必要になります。

プロファイル属性とは? | Adobe Target

ProfileScriptについて

基本

ProfileScriptはAdobe Targetで訪問者ID単位に情報をもたせる訪問者属性付与処理が可能な仕組みです。
使いこなすことで、よりきめ細かいターゲティング処理が可能です。

実際にAdobe Targetにリクエストが送られてから実際にOfferが変えるまでの処理フローにProfileScriptの処理を記載するとこうなります。

pageLoad Request処理の流れ

ProfileScriptの書き方Tips

処理量に気をつける

基本的にはJavaScriptで記述をすればOKです。ただ使っているJavaScriptのエンジンの都合上 2000 instrucrtions という制限があり、ヘルプにも以下の制約が書かれています。

  • 文字列の長さは1300文字、ループ回数は50回を超えないように
  • 正規表現はなるべく単純なものに
  • 出来る限りProfileScript自体は小さく、簡単に

よって、例えば数がわからない文字列をSplitで区切ってその後ループ処理・・・などをした時にかなり長いものを処理するとオーバーします。
実際に処理量がオーバーしてしまっているかはすぐに判断ができません。セットした上でActiveにした後、しばらく動いている状態にはなりますが、条件により処理量がオーバーしている場合は、今の添付画像のように強制的にInactiveになります。

image.png

その際にエラー部分にマウスカーソルを合わせるとこのようにエラー文が見えます。(2000 instructions 以上になっていると出てます)
image.png

値の書き換えをするかしないかをきちんと考える

ProfileScriptの中で書いたプログラムは、処理の流れ上全部のリクエストで必ず通ります。
意図しないようなリクエストで処理が動いた時に書き換えが発生した時に問題ないかを考えましょう。

また、ProfileScriptの中ではreturnすることで値が更新されます。
逆に言うとreturnしなかった場合は過去に保持した値をそのまま返却します。

// mboxParameterで"user_class"という値を送付が送られた時にその値をProfileScriptで保持しておきたい。
// ただしすべて必ず送られるわけではない…場合。
var val = mbox.param("user_class") || null;
if(val){
  return val;
}

逆に言うと、意図的に特定の時だけしか値を返してほしくない場合はnull値を返却するようにしないと過去の値を引き継ぎ続けますので気をつけてください。

LocalProfile変数を活用する

プログラムによってはProfileScript内でデータを保持しておいて、なにかそれに応じた処理みたいなものをしたい場合があると思います。(1個前に持ってた値と今の値を比較して…みたいな)

その場合はlocalProfile変数を使うことが出来ます。
これはそのProfileScriptの中でしか参照は出来ないのですが、保持し続けます。(変数スコープが狭まったモノのイメージ)

// 変数設定
user.setLocal("{設定したいKey値}","{Value値}");

// 変数利用(取り出し)
var val = user.getLocal("{設定したKey値}");
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0