1

次のような行と列を含むデータエクステンションがあります。

emailAddress     orderNumber   firstName   lastName   customerOrder
cust1@gmail.com  1111          Bill        Adams      2 brown shoes
cust1@gmail.com  1111          Bill        Adams      2 green socks
cust1@gmail.com  1111          Bill        Adams      1 orange backpack
cust1@gmail.com  2222          Bill        Adams      2 pink gloves
cust2@gmail.com  3333          David       Sherwood   5 yellow hats

私がやろうとしているのは、できればソースから変更せずに、このデータから注文受信メールを作成することです。そのため、理想的には、電子メール出力は、orderNumber に基づいて各顧客の customerOrder をグループ化します。次に、customerOrder が連結され、電子メールに挿入されます (上記はかなり単純化されていることに注意してください。customerOrder は、実際には電子メール内の HTML テーブルに挿入するための HTML です)。

これまでのところ、非常に基本的な進歩を遂げることができました。

%%[
Set @customerOrder = 
LookupOrderedRows("transactionsList",
"0",
"customerOrder",
"orderNumber",
"1111")
]%%

このコードを使用すると、注文番号 1111 のエントリが 3 つあることがわかります。if/then ループを作成する必要がありますか? または、LookupOrderedRows 関数からの出力を取得し、電子メール内の HTML テーブルで使用するために解析する方法はありますか?

4

1 に答える 1

1

私のブログの検索例の 1 つを使用すると、次のようなことができます。

%%[
var @rows, @row, @rowCount, @numRowsToReturn, @emailAddress, @i, @prevOrderNumber

set @emailAddress = AttributeValue("emailaddr")
set @numRowsToReturn = 0 /* 0 means all */
set @rows = LookupOrderedRows("transactionsList", @numRowsToReturn, "orderNumber", "emailAddress", @emailAddress)

set @rowCount = rowcount(@rows)

if @rowCount > 0 then

    set @prevOrderNumber = ""

    for @i = 1 to @rowCount do

        var @orderNumber, @firstName, @lastName, @customerOrder
        set @row = row(@rows,@i) /* get row based on loop counter */

        set @orderNumber = field(@row,"orderNumber")
        set @firstName = field(@row,"firstName")
        set @lastName = field(@row,"lastName")
        set @customerOrder = field(@row,"customerOrder")

        /* output headings for first order or when order # changes */
        if empty(@prevOrderNumber) or @prevOrderNumber != @orderNumber then 
           outputline(concat("<br>Order #:", @orderNumber))
           outputline(concat("<br>Name: ", @firstName, " ", @lastName))
           outputline(concat("<br>Line items:<br>"))
           set @prevOrderNumber = @orderNumber
        endif

        outputline(concat("<br>",@customerOrder))

    next @i

else 

    outputline(concat("<br>No transactionsList rows found"))

endif 
]%%
于 2016-07-09T22:04:57.877 に答える