サーバーサイド JavaScript: ユーザーの地域でのコンサートのシナリオ

この情報は、サーバーサイド JavaScript をデータエクステンションと共に使用して、購読者にその地域のコンサートについてメールメッセージを送信する方法を示しています。メールの内容は、購読者が指定するコンサートのジャンルによって異なります。このシナリオのサンプルコードが含まれるファイルをダウンロードしてください。

データエクステンションとデータリレーションシップ 

マーケターは、今後のコンサートに関する情報が含まれるデータエクステンションを作成します。各コンサートには、関連付けられたジャンル、チケット価格の範囲、日付、アーティスト、会場、都市が含まれます。後で、マーケターは、購読者の市区町村とジャンルの設定に基づいてこの情報をメールに含めるようにサーバーサイド JavaScript を作成します。

マーケターは Web ページを作成し、購読者はそのページで好きな音楽ジャンルを示します。この設定は Customer_Genre_Preferences データエクステンションに保存されます。

購読者テーブルには次のデータが含まれます。

Email Address (メールアドレス)Customer ID (顧客 ID)First Name (名)Last Name (姓)City (市区町村)
ettest201@example.com201AngelRuizIndianapolis (インディアナポリス)
ettest202@example.com202JohnDoeChicago (シカゴ)

Customer_Genre_Preferences データエクステンションには次のデータが含まれます。

Customer ID (顧客 ID)Genre (ジャンル)
201Rock (ロック)
201Alt Country (オルタナカントリー)
201Indie (インディーズ)
202Pop (ポップ)
202Folk (フォーク)
202Rock (ロック)

Upcoming_Shows データエクステンションには、次のデータが含まれます。

Concert ID (コンサート ID)Genre (ジャンル)Low Price (安値)High Price (高値)Show Date (コンサート開催日)Artist (アーティスト)Venue (会場)City (市区町村)
101Rock (ロック)354510/27/2007Band A (バンド A)Venue A (会場 A)Indianapolis (インディアナポリス)
106Indie (インディーズ)1537.510/6/2007Band B (バンド B)Venue B (会場 B)New York (ニューヨーク)
107Indie (インディーズ)254011/15/2007Band C (バンド C)Venue C (会場 C)Chicago (シカゴ)
108Alt-Country (オルタナカントリー)2547.510/27/2007Band D (バンド D)Venue D (会場 D)Indianapolis (インディアナポリス)
109Indie (インディーズ)355010/30/2007Band E (バンド E)Venue E (会場 E)New York (ニューヨーク)
111Alt-Country (オルタナカントリー)153010/19/2007Band F (バンド F)Venue F (会場 F)Chicago (シカゴ)
112Indie (インディーズ)3557.511/2/2007Band G (バンド G)Venue G (会場 G)Indianapolis (インディアナポリス)
113Folk (フォーク)253511/6/2007Band H (バンド H)Venue H (会場 H)Chicago (シカゴ)
114Alt-Country (オルタナカントリー)153011/15/2007Band I (バンド I)Venue I (会場 I)Indianapolis (インディアナポリス)
115Indie (インディーズ)253510/27/2007Band J (バンド J)Venue J (会場 J)Indianapolis (インディアナポリス)
116Alt-Country (オルタナカントリー)153010/30/2007Band K (バンド K)Venue K (会場 K)New York (ニューヨーク)
117Rock (ロック)1537.510/21/2007Band L (バンド L)Venue L (会場 L)Chicago (シカゴ)
118Indie (インディーズ)153010/19/2007Band M (バンド M)Venue M (会場 M)Indianapolis (インディアナポリス)
119Indie (インディーズ)254011/2/2007Band N (バンド N)Venue N (会場 N)New York (ニューヨーク)
120Alt-Country (オルタナカントリー)254011/6/2007Band O (バンド O)Venue O (会場 O)Indianapolis (インディアナポリス)
121Indie (インディーズ)3557.511/15/2007Band P (バンド P)Venue P (会場 P)Chicago (シカゴ)
122Indie (インディーズ)153010/27/2007Band Q (バンド Q)Venue Q (会場 Q)Chicago (シカゴ)
123Rock (ロック)253510/30/2007Band R (バンド R)Venue R (会場 R)Indianapolis (インディアナポリス)
124Indie (インディーズ)3557.510/21/2007Band S (バンド S)Venue S (会場 S)Chicago (シカゴ)
125Alt-Country (オルタナカントリー)2547.510/19/2007Band T (バンド T)Venue T (会場 T)Chicago (シカゴ)
126Alt-Country (オルタナカントリー)3557.511/2/2007Band U (バンド U)Venue U (会場 U)Indianapolis (インディアナポリス)
127Indie (インディーズ)253511/6/2007Band V (バンド V)Venue V (会場 V)Chicago (シカゴ)
128Indie (インディーズ)153011/15/2007Band W (バンド W)Venue W (会場 W)Chicago (シカゴ)
129Rock (ロック)3557.510/27/2007Band X (バンド X)Venue X (会場 X)New York (ニューヨーク)
130Rock (ロック)254010/30/2007Band Y (バンド Y)Venue Y (会場 Y)Chicago (シカゴ)
131Indie (インディーズ)2547.510/21/2007Band Z (バンド Z)Venue Z (会場 Z)New York (ニューヨーク)
132Pop (ポップ)3557.510/19/2007Band 0 (バンド 0)Venue 0 (会場 0)Chicago (シカゴ)
133Folk (フォーク)253511/2/2007Band 1 (バンド 1)Venue 1 (会場 1)New York (ニューヨーク)
138Indie (インディーズ)355010/21/2007Band 2 (バンド 2)Venue 2 (会場 2)Chicago (シカゴ)
139Indie (インディーズ)1537.510/29/2007Band 3 (バンド 3)Venue 3 (会場 3)Indianapolis (インディアナポリス)
140Alt-Country (オルタナカントリー)254011/2/2007Band 4 (バンド 4)Venue 4 (会場 4)Chicago (シカゴ)
141Pop (ポップ)253511/6/2007Band 5 (バンド 5)Venue 5 (会場 5)Indianapolis (インディアナポリス)
142Rock (ロック)254011/15/2007Band 6 (バンド 6)Venue 6 (会場 6)New York (ニューヨーク)
143Rock (ロック)254010/27/2007Band 7 (バンド 7)Venue 7 (会場 7)Indianapolis (インディアナポリス)
144Rock (ロック)153010/30/2007Band 8 (バンド 8)Venue 8 (会場 8)Chicago (シカゴ)
145Alt-Country (オルタナカントリー)254010/21/2007Band 9 (バンド 9)Venue 9 (会場 9)Chicago (シカゴ)
146Rock (ロック)355010/19/2007Band 10 (バンド 10)Venue 10 (会場 10)Chicago (シカゴ)
148Rock (ロック)355011/6/2007Band 11 (バンド 11)Venue 11 (会場 11)Indianapolis (インディアナポリス)

サーバーサイド JavaScript 

このサーバーサイド JavaScript はメールの本文に含まれます。

1<script runat="server">
2 Platform.Load('Core','1');
3</script>
4
5<html>
6
7<body style="font-size: 12px;color: #000099; font-family: verdana;">
8
9<p>Hi <ctrl:field name="FirstName" />,<br><br>
10We want to tell you about upcoming shows in your area based on your favorite music genres.  We think you are as stoked as we are to see great live music and wanted to pass the word on.  Enjoy!<br><br>
11</p>
12
13<h3>Upcoming Shows in <ctrl:field name="City" /></h3>
14<br/>
15
16<script runat="server">
17
18/* First we want to determine if the customer has any favorite genres stored. If not, we want to encourage them to create online */
19/* Otherwise, we will loop through every genre we find */
20
21 var musicSubscriberPreferenceDE = DataExtension.Init('Music Subscriber Preference');
22 var musicSubscriberDE = DataExtension.Init('Music Subscriber');
23 var upcomingShowDE = DataExtension.Init('Upcoming Show');
24
25 var customerId = Platform.Recipient.GetAttributeValue('CustomerId') ;
26 var city = Platform.Recipient.GetAttributeValue('City');
27 var musicSubscriberPreferenceRS = musicSubscriberPreferenceDE.Rows.Lookup(['CustomerId'], [customerId]);
28</script>
29
30<script runat="server">
31
32/* Now we are going to loop through each customer's genre, and then use that and City to look up upcoming shows to display in a table */
33/* if we find a genre, but no corresponding shows, we are not going to display anything for that genre */
34
35 if (musicSubscriberPreferenceRS.length > 0) {
36
37  for (var i = 0; i < musicSubscriberPreferenceRS.length; i++) {
38   var genrePref = musicSubscriberPreferenceRS[i]['GenrePreference'];
39   var upcomingShowRS = upcomingShowDE.Rows.Lookup(['City','Genre'], [city, genrePref]);
40
41   if (upcomingShowRS.length > 0) {
42
43    Write('<h4>Upcoming ' + genrePref + ' Shows</h4>');
44    Write('<table width="700px" style="border: 1 solid black; font-size: 10px;color: #000099; font-family: verdana;" cellpadding="2" cellspacing="0">');
45    Write('<tr style="font-size: 10px;color: #999999; font-family: verdana; font-weight: bold;">');
46    Write('<td>Date</td><td>Artist</td><td>Venue</td><td>Tickets</td><td>City</td></tr>');
47
48    for (var y = 0; y < upcomingShowRS.length; y++) {
49
50     var dateObj = new Date(upcomingShowRS[y]['ShowDate']);
51     var formattedDate = dateObj.getDate() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getFullYear();
52     var tr = (y%2==0)? '<tr style="background-color: #dcdcdc;">': '<tr>';
53
54     Write(tr + '<td>' + formattedDate + '</td>');
55     Write('<td>' + upcomingShowRS[y]['Artist'] + '</td>');
56     Write('<td>' + upcomingShowRS[y]['Venue'] + '</td>');
57     Write('<td>' + upcomingShowRS[y]['LowPrice'] + ' - ' + upcomingShowRS[y]['HighPrice'] + '</td>');
58     Write('<td>' + upcomingShowRS[y]['City'] + '</td></tr>');
59
60    }
61
62    Write('</table><br /><br />');
63
64   }
65
66  }
67
68
69 } else {
70</script>
71
72 <h4>We see that you don't have any genres stored, please add them online to get the most relevant information sent to you next time!</h4>
73 <a href="http://music.com">Add My Genres</a>
74
75<script runat="server">
76 }
77</script>
78
79<custom name="opencounter" type="tracking"><table cellpadding="2" cellspacing="0" width="600" ID="Table5" Border=0><tr><td><font face="verdana" size="1" color="#444444">This email was sent to:  <ctrl:field name="emailaddr" /> <br><br><b>Email Sent By:</b> <ctrl:field name="Member_Busname" /><br><ctrl:field name="Member_Addr"/> <ctrl:field name="Member_City" />, <ctrl:field name="Member_State" />, <ctrl:field name="Member_PostalCode" />, <ctrl:field name="Member_Country" /><br><br></font></td></tr></table>
80<script runat="server">Write('<a href="' + Platform.Recipient.GetAttributeValue('profile_center_url') + '" alias="Update Profile">Update Profile</a>')</script>
81
82</body>
83
84</html>

出力 

マーケターがメールを送信すると、アプリケーションでコードが処理されます。

Angel Ruiz の場合:

Hi Angel, (Angel 様)

We want to tell you about upcoming shows in your area based on your favorite music genres. (お気に入りの音楽ジャンルに基づいて、お客様の地域で開催される今後のコンサートについてお知らせいたします。)We think you are as stoked as we are to see great live music and wanted to pass the word on. Enjoy! (お客様は、素晴らしい生演奏を楽しみにしており、そのような情報が必要だと思われるので、ぜひご利用ください。)

Upcoming Shows in Indianapolis (インディアナポリスの今後のコンサート)

Upcoming Rock Shows (今後のロックコンサート)

Date (日付)Artist (アーティスト)Venue (会場)Tickets (チケット)City (市区町村)
Sat, Oct 27 (10 月 27 日 (土))Band A (バンド A)Venue A (会場 A)From $35.00 to $45.00 ($35.00 ~ $40.00)Indianapolis (インディアナポリス)
Tue, Oct 30 (10 月 30 日 (火))Band R (バンド R)Venue R (会場 R)From $25.00 to $35.00 ($25.00 ~ $35.00)Indianapolis (インディアナポリス)
Sat, Oct 27 (10 月 27 日 (土))Band 7 (バンド 7)Venue 7 (会場 7)From $25.00 to $40.00 ($25.00 ~ $40.00)Indianapolis (インディアナポリス)
Tue, Nov 6 (11 月 6 日 (火))Band 11 (バンド 11)Venue 11 (会場 11)From $35.00 to $50.00 ($35.00 ~ $50.00)Indianapolis (インディアナポリス)

Upcoming Alt-Country Shows (今後のオルタナカントリーコンサート)

Date (日付)Artist (アーティスト)Venue (会場)Tickets (チケット)City (市区町村)
Sat, Oct 27 (10 月 27 日 (土))Band D (バンド D)Venue D (会場 D)From $25 to $47.50 ($25 ~ $47.50)Indianapolis (インディアナポリス)
Thu, Nov 15 (11 月 15 日 (木))Band I (バンド I)Venue I (会場 I)From $15.00 to $30.00 ($15.00 ~ $30.00)Indianapolis (インディアナポリス)
Tue, Nov 6 (11 月 6 日 (火))Band O (バンド O)Venue O (会場 O)From $25.00 to $40.00 ($25.00 ~ $40.00)Indianapolis (インディアナポリス)
Fri, Nov 2 (11 月 2 日 (金))Band U (バンド U)Venue U (会場 U)From $35.00 to $57.50 ($35.00 ~ $57.00)Indianapolis (インディアナポリス)

Upcoming Indie Shows (今後のインディーズコンサート)

Date (日付)Artist (アーティスト)Venue (会場)Tickets (チケット)City (市区町村)
Fri, Nov 2 (11 月 2 日 (金))Band G (バンド G)Venue G (会場 G)From $35.00 to $57.50 ($35.00 ~ $57.00)Indianapolis (インディアナポリス)
Sat, Oct 27 (10 月 27 日 (土))Band J (バンド J)Venue J (会場 J)From $25.00 to $35.00 ($25.00 ~ $35.00)Indianapolis (インディアナポリス)
Fri, Oct 19 (10 月 19 日 (金))Band M (バンド M)Venue M (会場 M)From $15.00 to $30.00 ($15.00 ~ $30.00)Indianapolis (インディアナポリス)
Mon, Oct 29 (10 月 29 日 (月))Band 3 (バンド 3)Venue 3 (会場 3)From $15.00 to $37.50 ($15.00 ~ $37.50)Indianapolis (インディアナポリス)

John Doe の場合:

Hi John, (John 様)

We want to tell you about upcoming shows in your area based on your favorite music genres. (お気に入りの音楽ジャンルに基づいて、お客様の地域で開催される今後のコンサートについてお知らせいたします。)We think you are as stoked as we are to see great live music and wanted to pass the word on. Enjoy! (お客様は、素晴らしい生演奏を楽しみにしており、そのような情報が必要だと思われるので、ぜひご利用ください。)

Upcoming Shows in Chicago (シカゴの今後のコンサート)

Date (日付)Artist (アーティスト)Venue (会場)Tickets (チケット)City (市区町村)
Fri, Oct 19 (10 月 19 日 (金))Band 0 (バンド 0)Venue 0 (会場 0)From $35.00 to $57.50 ($35.00 ~ $57.00)Chicago (シカゴ)

Upcoming Pop Shows (今後のポップコンサート)

Date (日付) Artist (アーティスト) Venue (会場) Tickets (チケット) City (都市) Fri, Oct 19 (10 月 19 日 (金)) Band 0 (バンド 0) Venue 0 (会場 0) From $35.00 to $57.50 ($35.00 ~ $57.50) Chicago (シカゴ) Upcoming Folk Shows (今後のフォークコンサート)

Date (日付)Artist (アーティスト)Venue (会場)Tickets (チケット)City (市区町村)
Fri, Oct 19 (10 月 19 日 (金))Band 0 (バンド 0)Venue 0 (会場 0)From $35.00 to $57.50 ($35.00 ~ $57.00)Chicago (シカゴ)

Upcoming Rock Shows (今後のロックコンサート)

Date (日付)Artist (アーティスト)Venue (会場)Tickets (チケット)City (市区町村)
Sat, Oct 27 (10 月 27 日 (土))Band L (バンド L)Venue L (会場 L)From $15.00 to $37.50 ($15.00 ~ $37.50)Chicago (シカゴ)
Tue, Oct 30 (10 月 30 日 (火))Band R (バンド R)Venue R (会場 R)From $25.00 to $35.00 ($25.00 ~ $35.00)Chicago (シカゴ)
Sat, Oct 27 (10 月 27 日 (土))Band 7 (バンド 7)Venue 7 (会場 7)From $25.00 to $40.00 ($25.00 ~ $40.00)Chicago (シカゴ)
Tue, Nov 6 (11 月 6 日 (火))Band 11 (バンド 11)Venue 11 (会場 11)From $35.00 to $50.00 ($35.00 ~ $50.00)Chicago (シカゴ)