【解決か】Googleアドセンス「IABのTC文字列に関する問題が検出」とは何?

スポンサーリンク

ある日、突然Google Adsenseの管理画面上部に以下のようなメッセージが表示されるようになりました。

1つ以上のサイトまたはアプリでIABのTC文字列に関する問題が検出されました。これらのエラーは欧州ユーザー向けの広告配信に影響することがあります。「EUユーザーの同意」ページで詳細レポートをご確認ください。
「EUユーザーの同意」に移動

この記事ではこのエラーメッセージがいったい何なのか、またどうすればエラーメッセージを消すことができるのか自分なりに調べて、解決した方法を紹介します。

同じように困っている方と情報交換できたらと思って記事にしました。

ちなみにこのエラーはGDPR(EU一般データ保護規則)に関連するメッセージのようです。

IABのTC文字列に関する問題が検出というエラーメッセージ

冒頭でも触れたようにある日突然、Google Adsenseに見慣れないメッセージが表示されました。

これがそのメッセージです。

1つ以上のサイトまたはアプリでIABのTC文字列に関する問題が検出されました。これらのエラーは欧州ユーザー向けの広告配信に影響することがあります。「EUユーザーの同意」ページで詳細レポートをご確認ください。
「EUユーザーの同意」に移動

後述しますが、いろいろ情報を探っていく中で日本語では解決方法を見つけられないとわかったので、言語設定を変えて英語ではどんな風に書かれているのかもチェックしました。

We’ve detected an issue on your IAB TC string on one or more of your sites or apps. These errors may affect your ability to serve ads to European users. A detailed report is available for you on the EU User consent page.

エラーメッセージの中にある「EUユーザーの同意」というリンクをクリックすると、「TCFエラーレポートをダウンロード」というリンクがあります。

スポンサーリンク

そのリンクをクリックすると、CSVファイルがダウンロードされます。

CSVファイルにはこんなことが書かれています。

僕の場合はエラーは「3.3」です。「TCFエラーの詳細」と言うページによると「エラー3.3」の原因は「TC 文字列の最終更新日が 13 か月以上前です」と書かれていました。

日本語で原因と対策を調べても情報がまるでない

今回の問題について日本語で原因や対策を調べてもまったく情報がありませんでした。

日本にはたくさんのブロガーがいるのに、この問題に関して情報が全然ないのは、ヨーロッパの広告規制についてのエラーだからなのかもしれません。

ネットでなかなか情報を得られなかったので、Google Adsenseのサポートチームに今回の件について問い合わせをしたところ、「EUユーザーの同意ポリシーに関するサポートはしておりません」という何とも残念な回答が。

つまり八方塞がりでした。そこで英語でいろいろ情報を集めてみました。

ある記事にたどり着き試したところ解決した(今のところ)

スポンサーリンク

英語で時間に余裕があるときだけとは言え、何ヶ月にも渡っていろいろ情報収集をしました。

幾つか試したりもしましたが解決できず途方に暮れていると、とある記事に出会いました。

それが「AdSense IAB TCF Error 3.3: How to delete old string and reobtain consent – Stack Overflow」こちらです。

まさに僕が抱えていた問題に遭遇した人がいました。

この記事によると下記のJavaScriptをHeaderに埋め込むことで問題が解決するとのことでした。

JavaScript
<script>
  // Delete the Funding Choices cookie if consent is more than 12 months old
  try {
    const nm = "FCCDCF";        // Match name of Funding Choices cookie
    const dm = "mydomain.com";  // Match domain of Funding Choices cookie
    const pa = "/";             // Match path of Funding Choices cookie
    let tc = ('; ' + document.cookie).split('; ' + nm + '=');
    if (tc.length === 2) {
      tc = decodeURIComponent(tc.pop().split(';').shift());
      tc = JSON.parse(tc)[3][0].substring(1,9);
      tc = Uint8Array.from(window.atob(tc), (v) => v.charCodeAt(0));
      let dt = (tc[0] * 2**28) + (tc[1] * 2**20) + (tc[2] * 2**12) +
               (tc[3] * 2**4)  + (tc[4] >> 4);
      if (Date.now() / 1000 - dt / 10 > 86400 * 365)
        document.cookie = nm + "=;path=" + pa + ";domain=" + dm +
                          ";expires=" + new Date(0).toUTCString();
    }
  } finally {}
</script>

ちなみに”mydomain.com”はご自身のブログのドメイン名に書き換えてください。

このJavaScriptを入れてもすぐにはエラーは消えません。
このJavaScriptを入れないと、エラーの最終日がアップデートされ続けますが、JavaScriptを入れると最終日は更新されず、2-3週間経つとGoogle Adsenseの画面上に出てくるエラー自体が消えました。

根本的な解決策なのかわかりません

正直なところ、今回の問題が根本的な問題を解決しているのかわかりません。ただエラーは表示されなくなりました。

スポンサーリンク

また上で紹介したJavaScriptを入れたことでAdsenseが変になったり、妙に単価が下がったりは「今のところ」していません。

以前、プラグインを入れたところ一時的にエラーが消えましたが、しばらくしたら再発したので、今回どうなるか、今のところわかりません。

僕自身も他の人の記事を参考にしただけなので、もしこの記事を参考にされる場合は「自己責任」でお試しください。