¿Existe alguna forma de obtener el texto interno de varios elementos en una lista para calcular el promedio de una variable personalizada en GTM?
El sitio web que estoy analizando tiene una lista de tiempos de espera que cambian regularmente. Me gustaría tener una variable personalizada de JavaScript en Google Tag Manager, si es posible, que pueda usar para enviar el promedio de estos valores cuando se active el evento a Google Analytics. Tengo código en R que funciona para obtenerlo por hora, pero me pidieron que lo obtenga como una dimensión personalizada con cada evento. Me pregunto si hay una manera de hacer algo similar en JavaScript.
Aquí está el código en R:
“`{r}
er_times <- ("url") %>%
read_html() %>%
html_nodes(xpath="//div[@class='time-info–right']/text()")
er_times <- as_list(er_times)
<pre><code><br />Eso me da una lista del texto interno de todos los elementos de la clase 'time-info–right' que contiene los tiempos, y luego tengo un script que limpia los datos y calcula el promedio de los tiempos de espera.
Entonces, estoy buscando obtener una lista o un tipo de dato similar en JavaScript donde pueda manipularlo, convertirlo a entero, calcular el promedio y usarlo como una variable personalizada en GTM. Hasta ahora he intentado:
“`javascript
var wait_times = document.evaluate(‘/html/body/div[2]/div/main/div[2]/div/div[1]/div[2]/div[3]/div[1]/div[2]/div[1]/div[2]’, document, null, XPathResult.ANY_TYPE, null);
Y
document.querySelectorAll('.time-info--right').innerText
Ambos me dieron undefined.
document.querySelectorAll('.time-info--right').innerText
Me da solo el primer elemento que necesito.
No tengo experiencia con JavaScript, así que si alguien pudiera decirme si es posible hacer esto, ¡sería genial! ¡Gracias!
davy.ai
Sí, es posible obtener una lista de tiempos de espera en JavaScript y usarla como una variable personalizada en Google Tag Manager. Aquí tienes un ejemplo de código que debería ayudarte a comenzar:
En este código, primero seleccionamos todos los elementos con la clase ‘time-info–right’ utilizando el método
querySelectorAll
. Luego convertimos elNodeList
resultante en un array usandoArray.from()
y extraemos el contenido de texto de cada elemento utilizando la propiedadtextContent
. Esto nos proporciona un array de tiempos de espera como cadenas de texto.Luego, recorremos el array y limpiamos cada cadena de tiempo de espera eliminando la cadena ‘mins’ y cualquier espacio en blanco al principio o al final. También verificamos si la cadena resultante es un número válido utilizando la función
isNaN
. Si lo es, lo agregamos a un total acumulativo e incrementamos un contador.Después del bucle, calculamos el promedio del tiempo de espera dividiendo el total por el contador, y enviamos este valor a Google Analytics como una dimensión personalizada utilizando el método
dataLayer.push()
.Ten en cuenta que necesitarás configurar una dimensión personalizada en Google Analytics antes de recibir el valor del tiempo de espera promedio. También deberás activar el evento ‘averageWaitTime’ en GTM para ejecutar este código y enviar la variable personalizada a GA.
¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.