headにコードを埋め込む
アドセンスに申請するとheadタグ内にコードを貼るように指示される。
他にも方法はあるみたいだけれど、うまくいかなくて最終的にプラグインを選択している人が多かったので、今回はgatsby-plugin-google-adsense
というプラグインをインストールしてheadタグ内にコードを貼ってもらう。
$ yarn add gatsby-plugin-google-adsense
gatsby-config.jsに以下のコードを追加
plugins: [
// 省略
{
resolve: `gatsby-plugin-google-adsense`,
options: {
publisherId: process.env.GOOGLE_ADSENSE_ID,
},
},
GoogleAdSenseに審査を申請する。
ところがコロナの関係で、、、と7月の後半くらいから5回位申請したが、すべて審査に落ちてしまっていたが、8月後半になってようやく審査に通りました。
ads.txtファイルをアップロード
やっと広告を貼れると思いきや、以下のようなメッセージが。
gatsbyプロジェクトのルート直下にstaticフォルダを作成してads.txt
を設置。buildしてアップロードします。
エラーが解消されるまで待ちましょう。解消までに数日かかるみたいです。ちなみに自分は2日くらいで解消されました。
広告を貼る
やっと広告を貼れます。
アドセンス広告をreactに対応させる為にreact-adsense
プラグインをインストールします。
$ yarn add react-adsense
.cache
フォルダにあるdefault-html.js
をsrc/html.js
にコピーします。
$ cp .cache/default-html.js src/html.js
html.js
のhead内にscriptを追加
import React from 'react'
import PropTypes from 'prop-types'
export default function HTML(props) {
return (
<html {...props.htmlAttributes}>
<head>
<meta charSet="utf-8" />
<meta httpEquiv="x-ua-compatible" content="ie=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
{/* GoogleアドセンスのJSを読み込む */}
<script
async
src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"
></script>
{props.headComponents}
</head>
広告のコンポーネントを作成します。。
import React from 'react'
import AdSense from 'react-adsense'
const Ad = () => (
<div className="ad">
<AdSense.Google
client={process.env.GOOGLE_ADSENSE_ID}
slot=""
style={{ display: 'block' }}
responsive="true"
format="auto"
/>
</div>
)
export default Ad
あとは広告を表示したい場所にAdタグを貼り付けて、build後アップロードすれば完成!
貼った後すぐはアドセンスのスクリプトが403エラーになってしまっていて何も表示されなかったのですが、少し経ったら表示されるようになりました。