我试图使用Google标记管理器上的自定义模板带来的惊人功能来组织我们用来记录振幅事件的标记。
我以前有一个代码,如: amplitude.getInstance().logEvent(eventTitle,{args})
然而,由于沙箱javascript,我们没有直接访问幅度。
所以我试着做:
const callInWindow = require('callInWindow');
const copyFromWindow = require('copyFromWindow');
const amplitude = copyFromWindow('amplitude');
callInWindow('amplitude.getInstance().logEvent', eventTitle, args);
我给了你完全的许可
但是结果是标签失败了,错误说:标签XXX抛出了一个错误。
我找到的唯一解决办法是以以下方式使用API: amplitude.logEvent的不推荐版本。
const callInWindow = require('callInWindow');
const copyFromWindow = require('copyFromWindow');
const amplitude = copyFromWindow('amplitude');
callInWindow('amplitude.logEvent', eventTitle, args);
它工作正常,但我不知道根据振幅宣布的反对意见有多长时间:https://amplitude.github.io/Amplitude-JavaScript/Amplitude#amplitudelogevent
有谁知道我如何在js中首先获得amplitude.getInstance的实例,然后调用它的logEvent特性呢?
你的帮助将不胜感激。
干杯!
发布于 2020-09-30 15:41:46
这段代码能解决你的问题吗?
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
的执行权限,但仅此而已。
https://stackoverflow.com/questions/64123143
复制