В Salesforce Marketing Cloud у меня есть шаблон электронной почты. Электронная почта будет выходить каждый день. В электронном письме рекомендуется разместить до 3 вакансий на нашем сайте для каждого контакта в расширении данных.

Это расширение данных создано с помощью сложных действий SQL и Студии автоматизации действий SSJS.

Расширение данных выглядит примерно так:

ContactId   FirstName   Job_Id_1    Job_Id_2    Job_Id_3

Для каждого контакта может не быть 3 заданий для отправки. Таким образом, Job_Id_1 и Job_Id_2 могут быть заполнены, но Job_Id_3 может быть пустым.

Я хотел бы найти данные для каждой работы по ее идентификатору, а затем добавить некоторую информацию в электронное письмо.

Я пытаюсь найти чистый способ зацикливания результатов, анализа полей и печати одной и той же структуры HTML с динамическими данными.

Это то, что я пытаюсь сделать, но выдает ошибку, потому что я использую «Id» более одного раза.

SET @rows = LookupRows("JobsDataExtension", "Id", Job_Id_1, "Id", Job_Id_2, "Id", Job_Id_3)
SET @rowCount = RowCount(@rows) // One row for each Job that actually had an ID set

Я мог бы посмотреть каждый за раз:

SET @jobOneRows = LookupRows("JobsDataExtension", "Id", Job_Id_1)
SET @jobTwoRows = LookupRows("JobsDataExtension", "Id", Job_Id_2)
SET @jobThreeRows = LookupRows("JobsDataExtension", "Id", Job_Id_3)
SET @jobOneRowCount = RowCount(@jobOneRows)
SET @jobTwoRowCount = RowCount(@jobTwoRows )
SET @jobThreeRowCount = RowCount(@jobThreeRows )

Но тогда мне пришлось бы копировать и вставлять много кода:

%%[if @jobOneRowCount > 0 THEN]%%
...Lots of HTML with dynamic data...
%%[endif]%%

%%[if @jobTwoRowCount > 0 THEN]%%
...Lots of Copied HTML with dynamic data...
%%[endif]%%

%%[if @jobThreeRowCount > 0 THEN]%%
...Lots of Copied HTML with dynamic data...
%%[endif]%%

Пожалуйста, скажите мне, что есть лучший способ, чем этот...

Благодарность

0
Drewlo 3 Июн 2020 в 05:51

1 ответ

Лучший ответ

Если ваши имена полей содержат числа в конце, как в примере, вы можете создать цикл, который повторяет заданное количество раз и динамически создает значение поиска:

FOR @i = 1 TO 3 DO 
    SET @row = LookupRows('JobsDataExtension', 'Id', AttributeValue(Concat('Job_Id_', @i))
    IF RowCount(@row) > 0 THEN
        /* do something here*/
    ENDIF
NEXT @i
2
Mateusz Bartkowiak 3 Июн 2020 в 17:06