広告リクエストが行われると AdSense 広告ユニットが更新され、広告ユニットに広告クリエイティブが配信されたか、または未配信かが表示されます。広告未配信の広告ユニットの割合は、AdSense レポートの平均一致率で確認できます。
広告ユニットで広告のリクエストが完了すると、AdSense では data-ad-status
というパラメータを <ins>
要素に追加します。注: data-ad-status
を、広告処理のために広告コードによって使用される data-adsbygoogle-status
と混同しないようにしてください。
このパラメータは、広告が返されたかどうかに応じて次のいずれかに更新されます。
data-ad-status="filled" |
広告が広告ユニットに返され、現在表示されています。 |
data-ad-status="unfilled" |
広告が返されず、広告ユニットが空です。 |
広告未配信の広告ユニットに関する AdSense の対応
パラメータが「unfilled
」の場合、その広告ユニットが折りたたまれるか、空白スペースが表示されます。広告が折りたたまれるのはページのリフローが発生しない場合のみです。つまり、ビューポートの外にある広告ユニットのみが折りたたまれることになります。広告が配信されない他のすべての広告ユニットについては、広告ユニットのサイズが保持され、代わりに空白スペースが表示されます。
広告未配信の広告ユニットを非表示にする方法
(上級ユーザー向け)CSS または JavaScript を使用して、この動作を拡張できます。たとえば、広告未配信の広告ユニットをすべて非表示にする場合は、CSS で「display: none !important;
」スタイルを要素に適用します。
例 1: CSS を使用して広告未配信の広告ユニットを非表示にする
ページに以下の CSS スタイルを追加して、広告未配信の広告ユニットを自動的に非表示にできます。
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-1234567890123456"
data-ad-slot="1234567890"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
ins.adsbygoogle[data-ad-status="unfilled"] {
display: none !important;
}
例 2: 広告ユニットに広告が未配信の場合にのみ画像を表示する
広告ユニットに広告が表示されない場合、代わりに自社広告を表示するように指定できます。
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:inline-block;width:300px;height:250px"
data-ad-client="ca-pub-1234567890123456"
data-ad-slot="1234567890">
<a href="/page"><img src="/backup.jpg" width="300px" height="250px"></a>
</ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
ins.adsbygoogle a {
display: none !important;
}
ins.adsbygoogle[data-ad-status="unfilled"] a {
display: block;
}
別の方法として、JavaScript を使用してページを更新する場合は、MutationObserver を使用して data-ad-status
パラメータの変更を検出し、その変更内容に基づいて JavaScript コードを実行できます。
制限事項
data-ad-status
パラメータは、最前面ウィンドウに存在する広告ユニットにのみ追加されます。つまり、クロスドメイン ウィンドウ経由で配信されている広告ユニットの場合、data-ad-status
パラメータは広告ユニットに追加されません。
また、AdSense 広告ユニットを最初は非表示にして、data-ad-status
パラメータの変更時に表示できるようにすることはおすすめしません。広告ユニットがページに最初に表示されていない場合、その広告ユニットの広告リクエストが実行されないことがあります。