Google tag manager Google Tag Manager是否使用字符串值解释变量';假';作为一个布尔假?

Google tag manager Google Tag Manager是否使用字符串值解释变量';假';作为一个布尔假?,google-tag-manager,Google Tag Manager,我在Tag Manager中设置了一个新的数据层变量,该变量将表示事件是否为非交互命中。这应该是一个布尔真/假值。我将默认值设置为false(不带引号) 我注意到,当我在事件中显式地将此变量作为布尔值包含时,例如: dataLayer.push({'event': 'gaEvent', ..., 'nonInteractionHit': false}); 标记管理器的预览模式在事件属性非交互命中:false中显示为布尔值(不带引号)。这是意料之中的 但是,当我没有为nonInteraction

我在Tag Manager中设置了一个新的数据层变量,该变量将表示事件是否为非交互命中。这应该是一个布尔真/假值。我将默认值设置为
false
(不带引号)

我注意到,当我在事件中显式地将此变量作为布尔值包含时,例如:

dataLayer.push({'event': 'gaEvent', ..., 'nonInteractionHit': false});
标记管理器的预览模式在事件属性
非交互命中:false
中显示为布尔值(不带引号)。这是意料之中的

但是,当我没有为nonInteractionHit指定值时,例如:

dataLayer.push({'event': 'gaEvent', ...});
预览模式将使用
非交互命中触发的事件:“false”
显示为字符串值(带引号)。基本上,它似乎将我的默认值解释为字符串而不是布尔值。这是令人担忧的,因为JavaScript非常棒,字符串
'false'
实际上是真实的

>我的问题是:GTM是否将“false”或“true”的字符串表示为适当的布尔值,或者仅仅是字符串,特别是在被假定为布尔的属性的上下文中使用时?在我的情况下,
'false'
是否真的根据我的需要计算为
false


额外积分:有没有办法将变量的默认值指定为正确的布尔值?用户界面似乎不允许这样做——你只需要一个文本框来输入一个显然被解释为字符串的值。

我相信我已经找到了我问题的一般答案,但如果有人想提供更好的答案,我会保留这个选项

我在这里找到了答案:

我不确定在设置非交互命中的情况下如何准确解释“false”,但似乎某些GTM变量确实需要布尔类型,并且在字段(不带引号)中输入
true
false
会被解释为字符串,可能无法按预期工作。不幸的是,您不能在GTM文本字段中指定布尔值true/false

Simo优雅的解决方法是基于Javascript代码段定义{{true}}和{{false}}变量,Javascript代码段分别编写为
function(){return true;}
function(){return false;}
。然后,在我的例子中,我可以将默认值设置为变量
{{false}
。我已经验证了在预览模式下,它显示为一个正确的、未引用的布尔值

进一步证明:当我在文本框中输入默认值作为文本
false
,然后为“Convert false to…”设置格式覆盖并指定一些任意新值时。当我触发事件时,它没有被覆盖。它将值显示为
“false”
。因此,GTM自己的覆盖系统没有将文本
false
解释为布尔值。它也没有解释为是真的

带走:使用您自己的
{{true}}
{{false}}
变量来确保您指定了正确的布尔值