Search Consoleのデータをスプレッドシートで自動更新したいとお考えではありませんか。Search Console APIを使えば、クリック数や表示回数などを定期的にスプレッドシートに取り込めます。この記事では、GoogleスプレッドシートにSearch Console APIを連携してデータを自動取得する方法を手順付きで解説します。スクリプトの作成から定期実行の設定まで、初心者の方でも実践できる内容です。
【要点】Search Console API連携でデータを自動取得
- Apps ScriptでAPI関数を作成します: Search Console APIを呼び出すカスタム関数を記述し、スプレッドシートから実行できるようにします。
- トリガーで定期更新を設定します: Apps Scriptのトリガー機能を使い、毎日自動で最新データを取得します。
- 取得したデータを整形してグラフ化します: データをQUERY関数などで集計し、グラフで可視化して分析に活用します。
ADVERTISEMENT
目次
Search Console API連携の概要と前提条件
Search Console APIは、Google Search Consoleに蓄積された検索パフォーマンスデータをプログラムから取得するためのAPIです。スプレッドシートのApps Scriptを使うことで、このAPIを呼び出してデータをシートに直接書き込めます。事前にSearch Consoleで所有サイトを登録してある必要があります。また、Google Cloud Platform(GCP)でプロジェクトを作成し、Search Console APIを有効にして認証情報を準備します。認証にはOAuth 2.0を利用するため、クライアントIDとシークレットが必要です。
Search Console APIをスプレッドシートに連携する手順
- Google Cloud PlatformでAPIを有効にします
Google Cloud Consoleにアクセスし、新しいプロジェクトを作成します。APIとサービスから「Search Console API」を検索して有効にします。次に「認証情報」画面で「OAuth 2.0 クライアントID」を作成し、アプリケーションの種類を「デスクトップアプリ」として作成します。作成後に表示されるクライアントIDとクライアントシークレットをメモします。 - スプレッドシートでApps Scriptを開始します
連携したいスプレッドシートを開き、「拡張機能」メニューから「Apps Script」を選択します。プロジェクト名を「Search Console Connector」などに変更します。コードエディタが開いたら、メニューから「ライブラリ」を選び、ライブラリID「1B7FSrk5Zi6L1rSXXTD6DEoG1s0gD7k8Y」を追加してOAuth2ライブラリを組み込みます。 - スコープと認証を設定します
Apps Scriptのプロジェクト設定で「appsscript.json」マニフェストファイルを開き、oauthScopesに「https://www.googleapis.com/auth/webmasters」を追加します。次に、コードエディタに以下の認証用関数を記述します。function getService() {
return OAuth2.createService('searchconsole')
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setClientId('YOUR_CLIENT_ID')
.setClientSecret('YOUR_CLIENT_SECRET')
.setScope('https://www.googleapis.com/auth/webmasters')
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties());
}
function authCallback(request) {
var service = getService();
if (request.parameter && request.parameter.code) {
service.handleCallback(request);
}
return HtmlService.createHtmlOutput('認証が完了しました。タブを閉じてください。');
}
実際のクライアントIDとシークレットに置き換えます。 - データ取得関数を作成します
以下の関数を追加します。この関数は、指定したサイトURL、開始日、終了日、ディメンションを引数に取り、Search Console APIからデータを取得して配列で返します。function fetchSearchAnalytics(siteUrl, startDate, endDate, dimensions) {
var service = getService();
if (!service.hasAccess()) {
var authorizationUrl = service.getAuthorizationUrl();
Logger.log('認証URLを開いてアクセスを許可してください: ' + authorizationUrl);
return;
}
var url = 'https://www.googleapis.com/webmasters/v3/sites/' + encodeURIComponent(siteUrl) + '/searchAnalytics/query';
var payload = {
startDate: startDate,
endDate: endDate,
dimensions: dimensions
};
var options = {
method: 'post',
headers: {Authorization: 'Bearer ' + service.getAccessToken()},
contentType: 'application/json',
payload: JSON.stringify(payload)
};
var response = UrlFetchApp.fetch(url, options);
var result = JSON.parse(response.getContentText());
var rows = result.rows || [];
var data = [];
for (var i = 0; i < rows.length; i++) { var row = rows[i]; data.push([row.keys[0], row.clicks, row.impressions, row.ctr, row.position]); } return data; } - スプレッドシートにデータを書き込む関数を作成します
以下の関数は、取得したデータをアクティブシートに書き込みます。例えば、シート名「SearchConsoleData」に出力します。function writeDataToSheet() {
var siteUrl = 'sc-domain:example.com'; // ご自身のサイトに変更
var endDate = Utilities.formatDate(new Date(), 'JST', 'yyyy-MM-dd');
var startDate = '2024-01-01';
var dimensions = ['query'];
var data = fetchSearchAnalytics(siteUrl, startDate, endDate, dimensions);
if (data) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SearchConsoleData');
if (!sheet) {
sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('SearchConsoleData');
}
sheet.clear();
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
} - トリガーを設定して自動更新します
Apps Scriptエディタのメニューから「トリガー」を選び、新しいトリガーを追加します。関数を「writeDataToSheet」、イベントソースを「時間主導型」、時間間隔を「日タイマー」、時刻を「午前5時〜6時」などに設定します。これで毎日自動実行されるようになります。
Search Console API連携の注意点とトラブル対策
認証URLが表示されない場合
Apps Scriptの初回実行時に認証URLがログに出力されます。表示されない場合は、getService関数内のクライアントIDやシークレットが正しいか確認します。また、マニフェストファイルにスコープが正しく記述されているかも確認してください。
APIの利用制限に注意します
Search Console APIには1日あたりのクエリ数に制限があります。無料枠では1日あたり最大100万クエリまでです。頻繁に更新しすぎると制限に達するため、トリガーの間隔は1日1回以上にしないでください。
取得データの範囲とディメンションを適切に設定します
APIリクエストのdimensionsに指定できる値は「query」「page」「country」「device」などです。複数のディメンションを指定するとデータの行数が爆発的に増えるため、最初は1つだけ指定するとよいでしょう。また、開始日はSearch Consoleにデータが保存されている範囲内にします。通常は過去16ヶ月程度です。
OAuthトークンの有効期限切れに対処します
OAuth2ライブラリを使用することでトークンの更新は自動ですが、初回認証からしばらく経つと再認証が必要になる場合があります。その際はApps Scriptのログにエラーが出力されるので、再度認証URLを開いて許可してください。
ADVERTISEMENT
Search Console API連携と手動エクスポートの比較
| 項目 | Search Console API連携 | 手動エクスポート(CSVダウンロード) |
|---|---|---|
| 自動更新 | トリガーで完全自動 | 毎回手動でダウンロード・インポート |
| 取得できるデータの詳細 | クエリ・ページ・国・デバイスなど豊富 | Search Consoleの画面で指定したもののみ |
| 設定の難易度 | やや難しい(API設定・スクリプト記述が必要) | 難しい |
| カスタマイズ性 | 高い(スクリプトで自由に加工可能) | 低い(ダウンロードしたCSVをそのまま利用) |
| メンテナンス | APIの仕様変更時に対応が必要 | なし |
まとめ
この記事では、GoogleスプレッドシートとSearch Console APIを連携してデータを自動取得する方法を解説しました。Apps Scriptを使ってAPIを呼び出し、トリガーで定期更新することで、手間をかけずに最新の検索パフォーマンスデータをスプレッドシートに集約できます。次のステップとして、取得したデータをQUERY関数で集計したり、グラフで可視化したりすることで、SEO改善の強力な分析ツールとして活用できます。また、複数のサイトをまとめて管理したい場合は、スクリプトを拡張して複数のsiteUrlをループ処理するとよいでしょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
