es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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!

Tags:  , , ,

Answer

  1. Avatar for 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:

    // Seleccionar todos los elementos con la clase 'time-info--right'
    var timeElements = document.querySelectorAll('.time-info--right');
    
    // Convertir NodeList en un array y extraer el contenido de texto
    var waitTimes = Array.from(timeElements).map(function(elem) {
      return elem.textContent.trim();
    });
    
    // Limpiar los datos y calcular el promedio
    var sum = 0;
    var count = 0;
    for (var i = 0; i < waitTimes.length; i++) {
      var waitTime = waitTimes[i];
    
      // Limpiar el tiempo de espera
      waitTime = waitTime.replace('mins', '').trim();
    
      // Verificar si el tiempo de espera es un número válido
      if (!isNaN(waitTime)) {
        sum += parseFloat(waitTime);
        count++;
      }
    }
    
    var averageWaitTime = count > 0 ? (sum / count) : 0;
    
    // Enviar el promedio del tiempo de espera a Google Analytics como una dimensión personalizada
    dataLayer.push({
      'event': 'averageWaitTime',
      'averageWaitTime': averageWaitTime
    });
    

    En este código, primero seleccionamos todos los elementos con la clase ‘time-info–right’ utilizando el método querySelectorAll. Luego convertimos el NodeList resultante en un array usando Array.from() y extraemos el contenido de texto de cada elemento utilizando la propiedad textContent. 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.

Comments are closed.