Utilisation de Google Optimize dans un initialiseur de plugin JS

Salut tout le monde, j’ai un problème quand j’active v4_gtag pour l’analyse à la place de v3_analytics. J’ai besoin de GTag pour Google Optimize, mais je continue d’obtenir une erreur indiquant que gtag is not a function.

J’appelle la fonction gtag dans un fichier JS de plugin. Quelqu’un pourrait-il fournir plus de contexte sur la raison pour laquelle cela ne fonctionne pas ?

Voici un exemple de la façon dont j’ai écrit le code. Merci d’avance

export default {
  name: 'common-init',
  after: 'inject-objects',
  initialize() {
    gtag('event', 'optimize.callback', {
      name: settings.optimize_js_experiment_id,
      callback: (variation) => {
       console.log(`Variation: ${variation}`)
      }
    })
  }
}

Où la fonction gtag est-elle définie ?

Je suppose que c’est défini dans Discourse lorsque j’active gtag depuis les paramètres.

Vous devrez toujours l’importer, même s’il est déjà défini quelque part.

Donc, je dois toujours ajouter manuellement le script d’importation GTag quelque part ?

Il semble que gtag soit défini à l’exécution sous l’objet window, vous n’avez donc pas besoin de l’importer à nouveau, mais de l’appeler à l’exécution comme window.gtag.
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/google-universal-analytics-v4.js

J’ai réussi à définir la fonction au démarrage, et je pense que Discourse va la redéfinir lors de son chargement, ce qui fonctionne pour le moment. Cependant, j’ai maintenant un autre problème : lorsque j’ajoute mon code de suivi GA dans le code de suivi universel GA, il inclut toujours analytics.js, même si j’utilise v4_gtag. Est-ce un comportement attendu ? Cela ne risque-t-il pas de créer un problème d’envoi d’événements en double ?