Извлечение данных из JavaScript уже в DOM - PullRequest
0 голосов
/ 11 декабря 2018

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

Функции следующие:

<script>var ga = ga || [];
ga('require', 'ecommerce', 'ecommerce.js');
ga('ecommerce:addTransaction', {"id":"1031396","affiliation":"Purchases","revenue":"149.98","currency":"GBP","tax":0,"shipping":0,"city":"Example","region":"Example","country":"GB"});
ga('ecommerce:addItem', {"id":"1031396","sku":"000004","name":"Example","category":"Product: item","price":"80.000000","currency":"GBP","quantity":"1.00"});
ga('ecommerce:addItem', {"id":"1031396","sku":"000013","name":"Example","category":"Product: item","price":"49.980000","currency":"GBP","quantity":"1.00"});
ga('ecommerce:addItem', {"id":"1031396","sku":"item_adult","name":"Example","category":"Product: items","price":"20.000000","currency":"GBP","quantity":"1.00"});
ga('ecommerce:send');
</script>

По сути, я хотел бы получить массив всех SKU в этих данных, чтобы отправить его на другой канал.

У меня нет доступа к исходному коду, поэтому по существу использование существующего кода - единственный вариант.

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

1 Ответ

0 голосов
/ 11 декабря 2018

Насколько я знаю, код аналитики не позволяет вам читать свойства, которые были установлены с помощью функции ga().Таким образом, единственное, чрезвычайно хакерское и неэффективное решение, о котором я могу подумать, - это немного разобраться с помощью Javascript.

В пользовательском теге HTML вам нужно будет настроить функцию, которая проверяеттеги сценария на вашей странице.Поскольку у тега script нет идентификатора, вам нужно собрать их все, а затем прочитать их содержимое в виде строки и найти в строке шаблон (в основном , как в моем ответе на этот вопрос ,только вы искали бы "var ga = ga || [];" или подобное).

Вы, вероятно, затем разбили бы результирующую строку на строки (разделителем новой строки).Вы бы перебрали получившийся массив.Для каждой строки вы примените регулярное выражение, которое извлекает биты между фигурными скобками.Затем вы примените JSON.parse к совпадениям, и вы сможете получить доступ к свойствам каждого объекта (или, если вы лучше владеете регулярным выражением, чем я, вы можете напрямую извлечь значение sku).Вы помещаете это в массив, а затем (возможно) помещаете его в слой данных в своем пользовательском теге, чтобы использовать его в своих тегах.

Хотя это работает, это крайне уродливое решение.Намного лучше поговорить с вашим боссом или клиентом и сделать это правильно.Если вам нужно делать что-то подобное, добавьте заявление об отказе от ответственности, которое вы не можете дать гарантии, что это сработает в будущем (обычно, если вы это сделали, вы им владеете, и поддержание ужасных хаков на всю оставшуюся жизнь действительно утомит васв конце концов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...