问题描述
我正在尝试使用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
我发现的唯一解决方法是以以下方式使用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
的文本字段和一个带有args
和key
文本列的名为value
的表,此代码才能正常工作。
模板需要amplitude.getInstance
的执行权限,仅此而已。