🔍

Node.js(TS)でGoogle Search Console APIを使ってサイトの検索パフォーマンスを取得する

2022/08/25に公開

GCPのGoogle Search Console APIをNode.js(TS)で叩いてデータを取得する手順を書いていきます。

APIの設定

APIの設定は以下です。

  • API有効化
  • サービスアカウント作成
  • クレデンシャルファイル作成
  • サービスアカウントのメールアドレスをGoogle Search Consoleに追加

APIを検索して有効化。

サービスアカウントを作成。

クレデンシャル作成。

サーチコンソールのユーザーにサービスアカウントを追加。データの読み取りだけなら制限付きででOK。

APIを叩いてデータを取得

※Node.jsやTS周りで必要なパッケージをインストール済みの前提。

APIに必要なGoogleAPIのパッケージをインストール。dotenvもついでに。

$ yarn add googleapis dotenv

.envにクレデンシャルのprivate_keyclient_emailを書いておき、こんな感じで書けばデータが取れます。

import * as dotenv from 'dotenv';
dotenv.config();
import { google } from 'googleapis';

async function main() {
  const searchConsole = google.searchconsole('v1');

  const auth = new google.auth.GoogleAuth({
    credentials: {
      private_key: process.env.PRIVATE_KEY,
      client_email: process.env.CLIENT_EMAIL,
    },
    scopes: ['https://www.googleapis.com/auth/webmasters.readonly'],
  });

  const authClient = await auth.getClient();
  google.options({ auth: authClient });

  searchConsole.searchanalytics
    .query({
      siteUrl: 'sc-domain:hogehoge.com',
      requestBody: {
        startDate: '2022-01-01',
        endDate: '2022-12-31',
        dimensions: ['query', 'device', 'page', 'date'],
        rowLimit: 25000,
      },
    })
    .then((response: any) => console.log(response.data))
    .catch((reason: any) => console.log(reason));
}

main();

siteUrlの部分は注意が必要でSearch Consoleのプロパティタイプによって指定する書き方が違ってきます。

ドメインならsc-dmain:[domain]という感じでsc-domain:をつけないといけない。
URLプレフィックスなら登録しているURLをそのまま書けばOK。

レスポンスの中身はこんな感じ。

{
  rows: [
    {
      keys: [
        query,
        device,
        page,
        date
      ],
      clicks: 7,
      impressions: 9,
      ctr: 0.7777777777777778,
      position: 1.5555555555555556
    }
  ]
}

keysにはdimensionで指定した項目の値が入っています。

Discussion