这一节将分享如何GTM中的变量是否为未定义的,也就是是空的,值还没有传递进去。
如果变量的是undefined,这意味的当前这个变量在内存中没有获取有效的值,典型的检测方法如下:
function checkIfUndefined(variable) { return typeof variable === 'undefined'; }
但是在Google Tag Manager中,你不可能在触发器中通过js去检测,如果你要检测判断的话,你需要创建一个自定义变量,如果没问题就返回true,相反,为空就返回undefined。
在Google Tag Manager中有些跟简便的方法可以让你通过简单的字符检测就可以知道是否为undefined,这说起来可能有点难以置信,但这相比通过自定义变量的方法来说,已经是最便捷的了。
方法的本身是非常简单的,在触发器中,找到你需要验证的地方,随意改定一个变量创建一个条件does not equal,如下:
触发器中的Page Type如果是undefined才会触发。
现在整个规则只是检测undefined的,并不适用于其他的情形,如false、null、0或Nan,对于这些,你可以增加一些条件去检测,甚至可以使用正则表达式。
{{Variable}} does not match RegEx (ignore case) ^(undefined|null|0|false|NaN|)$
所有这些错误的类型都可以在GTM中的触发器匹配到,这对于些无效值检测是非常有用的。
GTM方法的某些问题可能会出现,例如,如果您实际上将字符串“未定义”作为变量的值,这不是一个不可能的场景,因为“未定义”是一个具有英语语言功能深度的词。 GTM无法区分这个有效的字符串值和该变量可能具有的未定义值,至少在触发器中不存在。因此,为了使检查尽可能健壮且毫不含糊,你将不得不求助于自定义JavaScript变量。
function() { var variableToValidate = {{Some Variable}}; return !!variableToCheckForFalsy; }
这段自定义js只有在是有效值就返回true,其他的就是无效的值,false。
说两句:undefined一般是值没有传进变量,这个在GTM预览的时候常用于问题定位的,如果说在触发器中做更严格的限制,非undefined的才出发的,可能会导致一些错误出现了,如何某些因为触发器设置不对导致的undefined,但实际由于触发器做了更严格的限定导致没有触发,因此数据会变少。
来源:https://www.simoahava.com