送信時の AMPscript の更新、挿入、および削除呼び出し処理
Marketing Cloud がメールおよびランディングページ内に含まれる AMPscript 呼び出しを処理する方法に関するこの情報を使用して、メール送信とデータエクステンションの情報を適切に取得および処理する AMPscript を作成します。
シナリオ
Northern Trail Outfitters はデータエクステンションを使用して、メール送信に使用される購読者情報を管理しています。それらの送信には、新規購読者または異なる購読者情報でレコードを更新する呼び出しが含まれます。これらのレコードを処理する担当者は、レコードがまだ存在しない場合、それらのレコードを含むデータエクステンションが InsertDE() 呼び出しを使用して更新されたかどうかを確認する AMPscript を作成します。ただしプロセスの最後に、アプリケーションはデータエクステンション内のプライマリキーに重複する値を挿入できないことを通知するエラーが表示されます。
アプリケーションが AMPscript 呼び出しを処理する方法
メール送信の一部として複数の異なる AMPscript 呼び出しを実行する代わりに、Marketing Cloud は該当するすべての AMPscript 呼び出しを取得し、送信の最後にそれらを 1 つの呼び出しで完了します。上記のシナリオでは、InsertDE() 関数を使用する AMPscript 呼び出しはシステムがメール送信の一部として行を追加した後に行われ、行はすでに存在するため、Marketing Cloud ではその呼び出しがエラーになります。
この場合、UpsertDE() AMPscript 呼び出しは行の存在チェックを処理し、追加情報や必要な情報を追加します。AMPscript を作成する場合、メール送信の実行時にすべての呼び出しは購読者バッチの最後に処理されることを常に念頭に置いてください。
次のサンプルコードは、送信後に行の情報を正しくチェックし、すべての適切なフィールドを更新します。
1%%[
2/* DO NOT EDIT */
3Var @jid, @pnum, @ctype, @ptype, @stype, @pcode
4Var @Hello
5Set @jid = jobid
6/* Set Variables here for easy editing */
7Set @pnum = "SendTest"
8Set @ctype = "SendTest"
9Set @ptype = "SendTest"
10Set @stype = "SendTest"
11Set @pcode = "SendTest"
12/* Check to see if a record exists with this JobID */
13Set @lookUp = LookupRows("Campaign Log","JobID",@jid)
14IF RowCount(@lookUp) == 0 THEN
15Set @Hello = 'Hello?'
16/* If no record exists with this JobID Insert Variables into the Data Extension */
17UpsertDE("Campaign Log", 1, "JobID", @jid, "ProjectNumber", @pnum, "ComType", @ctype, "ProgType", @ptype, "ProgCode", @pcode, "ProgSubType", @stype)
18ELSE
19Set @Hello = 'Hola!'
20ENDIF
21]%%
22<h1>Variables</h1>
23%%=v(@jid)=%%
24<br/>
25%%=v(@Hello)=%%
26<br/>
27%%=v(@lookUp)=%%
28<br/>
29%%=EMPTY(@lookUp)=%%
30<br/>
31%%=RowCount(@lookUp)=%%
32<br/>
33%%=v(@pnum)=%%
34<br/>
35%%=v(@ctype)=%%
36<br/>
37%%=v(@ptype)=%%
38<br/>
39%%=v(@stype)=%%
40<br/>
41%%=v(@pcode )=%%
42<br/>このサンプルコードはデータエクステンション内で変数を宣言し、送信の JobID を含む行でそのデータエクステンションをチェックします。レコードが存在しない場合、AMPscript はその行と関連情報を追加します。行が存在する場合、AMPscript はその行をその情報で更新します。このコードはタスクを完了し、重複した JobID によるエラーの問題を回避します。