Как в диспетчере тегов Google получить данные от всех членов массива слоев данных?

#google-tag-manager #google-datalayer

Вопрос:

Я занимаюсь продвижением уровня данных для покупок в электронной коммерции. В соответствии с руководством по GTM номенклатуры товаров находятся в массиве. Проблема заключается в извлечении данных: во всех руководствах, которые я видел, упоминается использование индекса массива-например transactionProduct.1.price , для получения цены за 2-й товар. Но это не надежное решение: что делать, если пользователь покупает более 100 товаров? По этой причине я не могу жестко закодировать индекс массива. Итак, как мне динамически фиксировать свойства в этом случае? Я думаю, что мне нужно использовать пользовательскую переменную JavaScript, определяемую пользователем, но как это будет выглядеть (пример был бы полезен)?

Ответ №1:

Я думаю, что я понял это:

Если наш толчок слоя данных выглядит так:

 window.dataLayer.push({
    'event' : 'purchase',
    'ecommerce': {
        'transaction': {
            'actionField': {
                 // ...
             },
            'products': // an array of objects...
         }
     }        
});
 

Затем эта пользовательская переменная JavaScript GTM вернет список (цен для каждого товара):

 function(){
    var productList = {{NAME_OF_DATA_VARIABLE_ON_GTM_OF_ENTIRE_PUSHED_OBJECT}}.transaction.products;

    return productList.map(function (obj) {
        return obj.price;
    });
}