Search Console│異常を毎週自動検知する|複数サイト対応のSEO監視ツール

Search ConsoleとGASを連携して、指標を決めて監視するツールを作成しました。

GCPを使いますが、無料でツールを作れます。

ブログ運営をできるだけ自動化したいという場合、問題を洗い出すのに導入すると最低限の保守ができると思います。

複数サイト対応しています。

ここからは、無料パートで解説したツールを実際に自分の環境で動かすまでの手順を、ひとつずつ追っていきます。

GAS自体は書いたことがあっても、「GCPプロジェクトとの紐付け」で止まってしまう人はとても多いです。

GASの『サービス』追加だけでは UrlFetchApp でSearch Console APIを直叩きする構成は通らず、ここを正しくやらないと最後の最後で 403 が返ってきます。

この記事では、そのGCP連携を新規プロジェクトの作成から、つまずきポイントを名指ししながら進めます。

全体の流れはこうです。

  1. GCPプロジェクトを新規作成する
  2. Search Console APIを有効化する
  3. OAuth同意画面を構成する
  4. GASプロジェクトを作り、コードを貼る
  5. GASとGCPプロジェクトを紐付ける
  6. スクリプトプロパティ(Slack情報)をセットする
  7. Slackアプリを用意してBotを招待する
  8. 手動実行して権限を承認する
  9. テスト通知で配線を確認する
  10. トリガーを登録して自動運転に乗せる

所要時間は、初めてGCPを触る場合で30〜40分ほど。

一度通してしまえば2サイト目以降は配列に1行足すだけです。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

事前準備:サチコの権限を確認しておく

手順に入る前にひとつだけ。

このツールを動かすGoogleアカウントが、監視したいサイトのSearch Consoleプロパティに「オーナー」または「フルユーザー」として登録されている必要があります。

「制限付きユーザー」では Search Analytics の一部や URL Inspection API が叩けません。

複数アカウントを使い分けている人は、どのアカウントでGASを動かすかを最初に決めて、そのアカウントの権限をサチコ側で確認しておいてください。

ここがずれていると、後半で原因の分かりにくいエラーに悩まされます。

サチコの「設定 > ユーザーと権限」で、自分のアカウントの権限が確認できます。

ステップ1:GCPプロジェクトを新規作成する

まず Google Cloud Console(console.cloud.google.com)を開きます。

GASを使っているGoogleアカウントと同じアカウントでログインしてください。ここが別アカウントだと後で紐付けできません。

画面上部、Googleロゴの右隣にあるプロジェクト選択のプルダウン(現在のプロジェクト名が表示されている部分)をクリックします。

初めてなら「My First Project」などと出ているはずです。

開いたダイアログの右上「新しいプロジェクト」をクリック。

プロジェクト作成画面で次を入力します。

  • プロジェクト名gsc-monitor など分かりやすい名前。
  • 後から変更できますが、プロジェクトID(名前の下に自動生成される gsc-monitor-xxxxxx のような文字列)は変更できないので、ここで多少こだわってもOKです。
  • 場所(組織):個人利用なら「組織なし」のままで問題ありません。

「作成」を押すと、画面右上に作成中の通知が出ます。

10〜20秒ほどで完了するので、完了したら必ず画面上部のプルダウンから、いま作ったプロジェクトに切り替えてください

ここで切り替え忘れたまま次のステップに進み、別のプロジェクトでAPIを有効化してしまう──これが最初のつまずきポイントです。プルダウンに表示されているプロジェクト名が、今作ったものになっているか確認します。

後で使うので、プロジェクト番号を控えておきます。Cloud Consoleの「ダッシュボード」または「プロジェクト設定」に「プロジェクト番号」(12桁前後の数字)が表示されています。プロジェクトID(文字列)とプロジェクト番号(数字)は別物で、GASとの紐付けに使うのは番号のほうです。

ステップ2:Search Console APIを有効化する

プロジェクトが選択された状態で、左上のハンバーガーメニュー(≡)から「APIとサービス > ライブラリ」を開きます。

または検索バーに「ライブラリ」と入れても辿り着けます。

APIライブラリの検索ボックスに「Search Console」と入力します。

検索結果に「Google Search Console API」が出てきます。

https://console.cloud.google.com/marketplace/product/google/searchconsole.googleapis.com

これをクリックして、詳細ページの「有効にする」ボタンを押します。

ここで注意。

検索結果に似た名前のものが複数出ることがありますが、有効化するのは「Google Search Console API」です。「Search Console」関連で別のものを有効にしても、このツールは動きません。名前を正確に確認してください。

「有効にする」を押すと数秒で完了し、APIの管理画面に切り替わります。

これでこのGCPプロジェクトはSearch Console APIを叩けるようになりました。

ステップ3:OAuth同意画面を構成する

ここが「GCPが不安」な人にとっての本丸です。順を追えば難しくありませんが、項目が多いので落ち着いて進めます。

このツールは、スクリプトを実行するあなた自身の権限でAPIを叩きます。そのために「このプロジェクトはどんなアプリで、誰が使うのか」をGoogleに登録する作業がOAuth同意画面の構成です。

左メニュー「APIとサービス > OAuth同意画面」を開きます。(Google Cloud ConsoleはこのあたりのUI名称・導線がしばしば変わります。「OAuth同意画面」または「ブランディング」「対象(Audience)」といった項目を探してください。やることの本質は同じです。)

User Type の選択

最初に「User Type」を聞かれます。

  • 外部(External):個人のGoogleアカウントで運用するならこちらを選びます。Google Workspaceの組織アカウントでも、組織外を含む構成にするならこちら。
  • 内部(Internal):Google Workspaceを使っていて、組織内のアカウントだけで完結させる場合に選べます。選べるなら同意画面まわりがシンプルになります。

個人利用なら基本は「外部」でOKです。「作成」を押します。

アプリ情報の入力

次にアプリの基本情報を入れます。

  • アプリ名GSC異常監視 など。これは認証時に「○○がGoogleアカウントへのアクセスを求めています」と表示される名前です。自分しか使わないので分かれば何でも構いません。
  • ユーザーサポートメール:自分のメールアドレスを選択。
  • デベロッパーの連絡先情報:同じく自分のメールアドレス。

ロゴやアプリのドメインなどは任意なので空欄のままで問題ありません。自分だけが使う内部ツールなので、ここを作り込む必要はありません。「保存して次へ」。

スコープ

「スコープ」の画面が出たら、ここは何も追加せず「保存して次へ」で進めて構いません。

スコープ(アクセス権限の範囲)は、後でGASを初めて実行するときに「このスクリプトはこういう権限が必要です」という形でまとめて承認します。同意画面側で事前にスコープを足しておく必要はありません。ここで何か追加しようとして手が止まりがちですが、スルーで正解です。

テストユーザー

User Typeで「外部」を選んだ場合、アプリは最初「テスト」という公開ステータスになります。テストステータスのアプリは、登録した「テストユーザー」しか認証を通せません。

「テストユーザー」の項目で「ADD USERS(ユーザーを追加)」を押し、このツールを動かすGoogleアカウントのメールアドレス(=あなた自身)を追加します。

ここを忘れると、後でGASを実行したときに「このアプリはテスト中です」「アクセスをブロックしました」といったエラーで認証が止まります。自分自身をテストユーザーに入れる──これを必ずやってください。

補足:「公開」する必要はありません。 自分だけが使うツールなので、アプリのステータスは「テスト」のままで問題ありません。「アプリを公開」ボタンを押すとGoogleの審査対象になり得るので、押さないでください。テストユーザーに自分を入れてあれば、テストステータスのまま運用できます。

これで同意画面の構成は完了です。


ステップ4:GASプロジェクトを作り、コードを貼る

ここからGAS側です。

script.google.com を開き、GCPと同じGoogleアカウントであることを確認して、「新しいプロジェクト」をクリックします。

エディタが開いたら、最初からある myFunction のひな形を含めて中身を全部削除し、無料パートで配布したコード(コード.gs)を丸ごと貼り付けます。

貼り終えたら、左上のプロジェクト名(「無題のプロジェクト」)をクリックして、GSC異常監視 など分かりやすい名前に変更しておきます。フロッピーディスクのアイコン、または Ctrl + S(Macは Cmd + S)で保存します。

この時点ではまだ実行しません。先にGCPとの紐付けと、設定の記入を済ませます。

SITES配列を自分のサイトに書き換える

コード上部の SITES 配列を、自分の監視したいサイトに書き換えます。

const SITES = [
  {
    name: 'サイトA',
    property: 'sc-domain:example.com',
    sampleUrls: ['https://example.com/'],
  },
];

property はサチコの「プロパティ」文字列を登録されている通りに入れます。

  • ドメインプロパティなら sc-domain:example.com
  • URLプレフィックス型なら https://example.com/(末尾スラッシュ必須)

自分がどちらのタイプで登録しているかは、サチコの画面左上のプロパティ選択で確認できます。ここの表記がサチコの登録と1文字でも違うとデータが取得できないので、コピペで正確に入れてください。

ステップ5:GASとGCPプロジェクトを紐付ける

この記事で一番重要なステップです。 ここを飛ばすと、コードが正しくてもAPIが通りません。

GASエディタの左メニューから、歯車アイコンの「プロジェクトの設定」を開きます。

下のほうにスクロールすると「Google Cloud Platform(GCP)プロジェクト」というセクションがあります。初期状態では「デフォルトのプロジェクト」が紐付いています。このデフォルトプロジェクトでは、自分でAPIを有効化したりできないため、ステップ1で作ったプロジェクトに切り替えます。

プロジェクトを変更」ボタンを押します。

「GCPプロジェクト番号」の入力欄が出るので、ステップ1で控えておいたプロジェクト番号(12桁前後の数字)を入力します。プロジェクトID(文字列)ではなく**番号(数字)**です。ここを取り違える人が多いので注意。

「プロジェクトを設定」を押して、エラーが出なければ紐付け完了です。

うまくいかないとき:「番号が見つからない」「権限がない」と言われる場合、たいていは①番号の打ち間違い、②GASとGCPでログインアカウントが違う、③そのアカウントがGCPプロジェクトの権限を持っていない、のどれかです。ステップ1〜2を同じアカウントでやったか、もう一度確認してください。

これで「GASプロジェクト」と「Search Console APIを有効化したGCPプロジェクト」が結びつきました。GASがAPIを叩いたときに、ステップ2で有効化したAPIとステップ3で構成した同意画面が使われるようになります。

ステップ6:スクリプトプロパティをセットする

次に、Slack通知に必要な情報をGASに登録します。コードに直接書かず、スクリプトプロパティに保存するのがセオリーです(コードを誰かに共有してもトークンが漏れません)。

GASエディタの「プロジェクトの設定」(ステップ5と同じ画面)を開き、一番下までスクロールすると「スクリプト プロパティ」のセクションがあります。

スクリプト プロパティを追加」を押して、次の2つを登録します。値は次のステップ7でSlackから取得するので、いったんこの画面の場所だけ確認して、ステップ7のあと戻ってきて入力しても構いません。

プロパティ
SLACK_BOT_TOKENSlackアプリの Bot User OAuth Token(xoxb- で始まる文字列)
SLACK_CHANNEL通知先チャンネル(#seo-alert のような名前、またはチャンネルID C0XXXXXXX

プロパティ名(左側)はスペルを正確に。コードはこの名前でプロパティを読みに行くので、SLACK_BOT_TOKENSLACK_TOKEN になっているだけで動きません。

入力したら「スクリプト プロパティを保存」を押します。

ステップ7:Slackアプリを用意してBotを招待する

ステップ6で必要になるSlackの2つの値を取得します。Slackアプリをまだ持っていない前提で進めます。

Slackアプリを作る

api.slack.com/apps を開き、「Create New App」をクリックします。

From scratch」を選び、アプリ名(GSC Monitor など)と、通知を送りたいワークスペースを選択して「Create App」。

chat:write 権限を付与する

アプリの管理画面左メニューから「OAuth & Permissions」を開きます。

下にスクロールして「Scopes」セクションの「Bot Token Scopes」で「Add an OAuth Scope」を押し、「chat:write」を追加します。これがメッセージ投稿に必要な最小限の権限です。

ワークスペースにインストールしてトークンを取得

同じ「OAuth & Permissions」画面の上部に戻り、「Install to Workspace」(または Install to ~)を押します。確認画面で「許可する」。

インストールが完了すると、「Bot User OAuth Token」として xoxb- で始まる文字列が表示されます。これが SLACK_BOT_TOKEN の値です。コピーして、ステップ6のスクリプトプロパティに貼り付けます。

Botを通知先チャンネルに招待する

最後に、Slack本体(アプリ)で通知を送りたいチャンネルを開き、メッセージ欄に次のように打ち込みます。

/invite @GSC Monitor

@ のあとはステップ7で付けたアプリ名)

これでBotがチャンネルに参加します。この招待を忘れると、トークンが正しくてもメッセージが投稿できませんnot_in_channel というエラーになります)。

SLACK_CHANNEL の値には、このチャンネル名を # 込みで(例:#seo-alert)入れます。チャンネルIDでも構いません(チャンネル名をクリックして開く詳細の一番下にあります)。

ここまでで、ステップ6のスクリプトプロパティ2つが両方とも埋まっているはずです。埋まっているか確認してください。

実際のGAS

以下、実際のコードです。

  • URLをコピーしました!

WAZAの有料記事のサブスクリプションも開始しました。

目次