🔍
Node.js(TS)でGoogle Search Console APIを使ってサイトの検索パフォーマンスを取得する
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_key
とclient_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