Мне нужно получить записи контактов из CRM с помощью AMPScript на основе поля мобильного телефона. Теперь данные можно было хранить в международном формате или без кода страны. Для этого у меня было что-то вроде

%%[
    SET @contactRows = RetrieveSalesforceObjects("Contact","Id","MobilePhone","=",CONCAT("+",MOBILE_NUMBER))
    SET @contactRows2 = RetrieveSalesforceObjects("Contact","Id","MobilePhone","=",MOBILE_NUMBER)
]%%

Я ищу способ сделать что-то вроде

@contactRows.addAll(@contactRows2)

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

Спасибо за любую помощь заранее

0
Aditya Gollakota 7 Фев 2020 в 02:52

1 ответ

Лучший ответ

Не существует эквивалента JavaScript array1.concat(array2) для наборов строк AMPScript, поэтому любой метод построения одного набора строк из двух наборов строк немного неуклюж и потребует нескольких циклов. Вот предлагаемый метод, который создает строку с разделителями, содержащую ваши идентификаторы из обоих наборов строк, а затем превращает ее обратно в один набор строк, на котором вы можете выполнять свою бизнес-логику.

%%[
    SET @contactRows = RetrieveSalesforceObjects("Contact","Id","MobilePhone","=",CONCAT("+",MOBILE_NUMBER))
    SET @contactRows2 = RetrieveSalesforceObjects("Contact","Id","MobilePhone","=",MOBILE_NUMBER)

    SET @totRows = Add(RowCount(@contactRows),RowCount(@contactRows2))
    SET @ids = ''
    SET @offset = 0
    SET @rowSet = @contactRows

    FOR @i = 1 TO @totRows DO
        IF @i > RowCount(@contactRows) THEN
            /* Move to next rowset */
            SET @rowSet = @contactRows2
            SET @offset = RowCount(@contactRows)
        ENDIF

        SET @row = Row(@rowset,Subtract(@i,@offset))

        /* Add Current Id to the @ids string */
        SET @ids = Concat(@ids,Field(@row,'Id'))
        IF @i < @totRows THEN 
            SET @ids = Concat(@ids,',')
        ENDIF
    NEXT @i

    /* Create a single rowset containing ids from your string */
    SET @rowset = BuildRowSetFromString(@ids,',')

]%%
2
Macca 7 Фев 2020 в 11:09
Спасибо, это сработало хорошо
 – 
Aditya Gollakota
10 Фев 2020 в 01:39