最近,我开始从我的 google admanager 广告单元中收到此错误。错误是 multisize mapping only for singlesize 没有错误。
[GPT] 无效参数:SizeMappingBuilder.addSize([356, 0], [[336, 280]、[300、250]])。删除了所有零面积槽尺寸。
以下是我的sizeMapping。
<script>
googletag.cmd.push(function(){
var adCode = { "top":'/21762728/top'};
var adSize = {"top":[[336,280],[300,250]]};
var TopAdMap = googletag.sizeMapping().addSize([356, 0], [[336,280],[300,250]]).addSize([0, 0], [300,250]).build();
googletag.defineSlot(adCode.top, adSize.top, 'ad-top-slot').defineSizeMapping(TopAdMap).addService(googletag.pubads());
});
</script>
这是一段使用 Google Ad Manager (GAM) API 定义和设置广告位的 JavaScript 代码。这是每行的细分:
定义一个名为 adCode 的 JavaScript 变量,它包含一个对象,其键值对分别为 top 和 '/21762728/top'。此变量用于指定广告位的代码。 定义一个名为 adSize 的 JavaScript 变量,它包含一个对象,该对象的键值对分别为 top 和 [[336,280],[300,250]]。此变量用于指定广告位的尺寸。 定义一个名为 TopAdMap 的 JavaScript 变量,它使用 googletag.sizeMapping() 方法为广告位创建尺寸映射。尺寸映射指定应根据浏览器窗口的宽度显示哪些广告尺寸。在这种情况下,它将广告尺寸 [[336,280],[300,250]] 映射到至少 356 像素的浏览器窗口宽度,并将 [[300,250]] 映射到任何更小的宽度。此变量用于定义广告位的尺寸映射。 使用 googletag.defineSlot() 方法定义 Google Ad Manager 广告位。该方法采用三个参数 - 广告代码、广告尺寸和应显示广告的 div 元素的 ID。 adCode.top 和adSize.top 变量分别用于指定广告位的代码和尺寸。应显示广告的 div 元素的 ID 为“ad-top-slot”。 defineSizeMapping() 方法用于指定广告位的尺寸映射,addService() 方法用于将广告位添加到 Google Ad Manager 的广告服务器。 此 JavaScript 代码设置了一个响应式广告位,可以根据浏览器窗口的宽度显示两种不同的广告尺寸。它还为广告位定义了尺寸映射,以确保向用户展示合适的广告尺寸。
根据官方文档,您的尺寸映射代码是正确的。这是关于此错误的说明(此处):
提供给指定 GPT 方法($METHODNAME)的 SizeMapping($ARGS)无效并自动删除。
我进行了几次测试,看起来错误的根源是视口的高度值为零,因为以下不会引发任何错误:
googletag.cmd.push(function(){
var adCode = { "top":'/21762728/top'};
var adCode = { "top":'/21762728/top'};
var adSize = {"top":[[336,280],[300,250]]};
var TopAdMap = googletag.sizeMapping().addSize([356, 1], [[336,280],[300,250]]).addSize([0, 0], [300,250]).build();
googletag.defineSlot(adCode.top, adSize.top, 'ad-top-slot').defineSizeMapping(TopAdMap).addService(googletag.pubads());
});
事情是你不希望用户的 viewportHeight 影响你的 sizeMapping ......所以为了避免抛出警告,这里有一个解决方法:使用 sizeMappingArray 方法而不是 sizeMappingBuilder :
googletag.cmd.push(function(){
var adCode = { "top":'/21762728/top'};
var adSize = {"top":[[336,280],[300,250]]};
var TopAdMap = [
[[356, 0], [[336,280],[300,250]]],
[[0,0], [[300, 250]]]
];
googletag.defineSlot(adCode.top, adSize.top, 'ad-top-slot').defineSizeMapping(TopAdMap).addService(googletag.pubads());