Google跟踪代码管理器自定义模板和幅度事件日志记录

问题描述

我正在尝试使用Google跟踪代码管理器中“自定义模板”带来的惊人功能来组织用于记录振幅事件的标记

我曾经有一个类似的代码:振幅.getInstance()。logEvent(eventTitle,{args})

但是,由于使用沙箱javascript,我们无法直接访问振幅。

所以我尝试做:

const callInWindow = require('callInWindow');
const copyFromWindow = require('copyFromWindow');

const amplitude = copyFromWindow('amplitude');
callInWindow('amplitude.getInstance().logEvent',eventTitle,args);

我对:赋予了全部权限

  • 振幅
  • amplitude.getInstance
  • amplitude.getInstance.logEvent

但是结果是标记失败,并显示错误消息:标记XXX抛出错误

我发现的唯一解决方法是以以下方式使用API​​的不推荐使用的版本:振幅.logEvent。

const callInWindow = require('callInWindow');
const copyFromWindow = require('copyFromWindow');

const amplitude = copyFromWindow('amplitude');
callInWindow('amplitude.logEvent',args);

它可以正常工作,但基于Amplitude宣布的弃用,我不知道要花多长时间:https://amplitude.github.io/Amplitude-JavaScript/Amplitude#amplitudelogevent

有人知道我怎么能在js沙箱中先获取振幅.getInstance的实例,然后使用它的logEvent功能进行调用吗?

我们将非常感谢您的帮助。

干杯!

解决方法

此代码能解决您的问题吗?

const callInWindow = require('callInWindow');

const args = data.args.reduce((result,item) => {
  result[item.key] = item.value;
  return result;
},{});

const amplitudeInstance = callInWindow('amplitude.getInstance');
amplitudeInstance.logEvent(data.eventTitle,args);

data.gtmOnSuccess();

您需要一个名为eventTitle的文本字段和一个带有argskey文本列的名为value的表,此代码才能正常工作。

screenshot of fields

模板需要amplitude.getInstance的执行权限,仅此而已。