googleアドセンスには広告ブロック機能がある。
その中の一つ、表示したくない広告主のドメイン丸ごとブロックする機能「広告主の URL、個別の広告主の広告をブロックします」というのがある。
美や健康に関係があるとは到底思えない、極めて下品な謎美容、謎サプリの広告をブロックするために大多数の管理者(たぶん)が使ってるアレだ。
しかしこの機能、管理画面がショボすぎる。特に一括管理できないのが酷い(2022年現在、以前は出来た気がするんだが)。
だいたい、文字列だけではどういうサイトだったかも解らない(忘れる)。
ということで、強引にgoogleスプレッドシートを使って一括管理&リスト化(そこからのIMPORTXML関数で死活確認してからの、カンマ区切りで一括出力)する方法のメモ。
割と単なる力技だが、google神に改善を期待して書いた(たぶん無い)。
Googleは、もっとWebサイト側に寄っていただきたい
直接関係ない気もするが、まず最初に書いておく。
本件は明らかに寡占状態になりまくっている弊害だと感じる。
Google神のパワーが絶大すぎるため、改善は神の都合でしか行われないのだ・・・
としてもだよ、この管理ツールは非常にデキが悪いとしか言いようが無い。
特に一括解除も、リストのダウンロードもできない点が、キレッキレの神クオリティだ。
これでは、消滅したサイトをリストから削除するのが異様にめんどくさいではないか(丸ごとブロックを決意させる程の酷いサイトなんか1年くらいで消滅するし)。
つーかこんなの「Google側で自動的にやってくれよ」とマジで思うのだが、Google神はやはり神ではなく営利企業なので・・・広告主ファースト感が滲み出ており、当該「広告主の URL機能」はぶっちゃけ使って欲しくないのだろうな、とすら感じる(上限500件埋まるか、諦めるの待ってんじゃね疑惑)。
こんな個人サイト見てないと思うし大人の都合で難しいのは解るが、今後の改善を期待したいところだ。
ということで、以下本文。
一括指定はできる
この機能のための、酷すぎる広告ドメインリストを配信している方はググれば割と居る(みんなムカついてんだよアレ、どうにかしてくれよマジで)。
やり方は、カンマ区切りのドメインリストをボックスにペーストすればOKである。
いちいちカンマで区切らせるとか、なんだか往年のITドカタ仕様感が否めないが、一応できるのは確かだ(所有ドメインリストから置換ツールなど、例えばNotepad++等で作れるけど)。
しかし、なんというか、こんなもん神自慢のAIで判断してくれよ、と言いたい(酷い広告主を)。
だが一括解除はできない
ブロック指定はしたものの、その先の管理機能が壊滅的に無い。
単発でボタンポチるとか意味不明。ABテストやりたい人とか、どうするのだろうか(やらないだろうが)。
まぁ、とにかく問題はブロック解除したい場合に尽きる。このシーンは確実にあるだろう。しかし、ドメインの文字列だけではどういうサイトなのか解らないのであった・・・
ということで、最低限この禁止ドメインリストさえ別に作っとけばギリ何とかなるかな。
的な観点にてリスト化してみたという、あくまで個人的なメモであり、その手順(力技)は以下の通り。
広告配信禁止ドメイン リスト化の手順
Googleスプレッドシートのフィルタ機能とエクスポート機能(ダウンロード)を使う。
- アドセンス管理画面で最大数表示にする(50件)
- ドメインリスト部分を手動選択して手動コピー(CTRL+C)
- googleスプレッドシートに貼り付ける
- 1-3を繰り返し全件貼り付ける(最大で10回)
- 一番上のセルにフィルタ(データ>フィルタを作成)を付加
- 不要な行を非表示(「ブロック済み」を選択解除)
- ドメイン名部分を全て選択してコピー(CTRL+C)
- 別シートに貼付
- ファイル>ダウンロード>カンマ区切り形式(CSV)
- メモ帳などで開くとカンマ付きURLリストになってる
8のリストをマスターとして保存しておき、これを元に管理リストを作成する。
IMPORTXML関数でページタイトルを付加
手順8で完成したドメインリストは・・・
前述のとおり、これだけではどういうサイトなのかイマイチ解りづらい。
最低限、右の列にタイトルを追加したいところだが・・・全部手動入力はさすがにあり得ない(正に往年のITドカタである)。
ということで、ググった・・・方法はいくつか有りそう。
- スクレイピングツールを使う
- エクセルのVBAでマクロ組む
- GAS(Google Apps Script)で簡易スクレイピングツールを作る(というかネット上にある先人が編み出した各種コードを改造)
- IMPORTXML関数で取得(引数はURL+XPathクエリのみでいける)
dはスプレッドシートに標準で組み込まれてる関数。低スキルである当サイトの管理人でもできそう。
てことで、やってみた。
C列に =IMPORTXML($A$2&B2,”//title”)
たったこれだけでドメイン+タイトルのリストが完成。やはりグーグルは神だったのか・・・
注意点は、引数がドメインリストだけだとプロトコルが無いためエラーになってしまう。対策としてB列にドメインリストをペースト、A列(上記の例 A2)に「https://」文字列を入れておき、&を使ってB列と結合することくらいだろうか。
なお、C列( =IMPORTXML($A$2&B2,”//title”) )はオートフィルしてる(だから$A$2)。
ただし自動的にアクセスしてデータを取得できるという特性上、付加軽減(おそらくDos攻撃対策)のための件数制限がかかってる模様。
100~150件で制限がかかるようだ(アカウント毎?)。ブロック対象件数が多い場合は分割して別途実行するなどの対策が必要かと思う(それか、Google Apps Scriptでコード書く)。
運用例
当サイトの管理人は「#N/Aを返したドメイン=消滅した」と判断(コード取得して400番代で判断した方が良いとは思うけど、サーバーだけは残ってるケースもあるし、本件そこまでやるほどか)。
カンマ付きで#N/Aのドメインを一括ダウンロード(先程の手順6-10)したあと、アドセンス管理画面のボックスに全てぶちこみ、単発でボタンをポチってリストから消した(許可済みにしとくと、時間経過で消えたはず)。
このへん、スキル最強マンならGASでアドセンス直制御できそうな気もするけど、規約の関係や、そもそも仕様が変わったらパーなので・・・そこまでするほどでも無いのかな、とは思う。