ADVERTISEMENT

【Googleスプレッドシート】Search Consoleのデータを連携!Search Console APIでの自動取込

【Googleスプレッドシート】Search Consoleのデータを連携!Search Console APIでの自動取込
🛡️ 超解決

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をスプレッドシートに連携する手順

  1. Google Cloud PlatformでAPIを有効にします
    Google Cloud Consoleにアクセスし、新しいプロジェクトを作成します。APIとサービスから「Search Console API」を検索して有効にします。次に「認証情報」画面で「OAuth 2.0 クライアントID」を作成し、アプリケーションの種類を「デスクトップアプリ」として作成します。作成後に表示されるクライアントIDとクライアントシークレットをメモします。
  2. スプレッドシートでApps Scriptを開始します
    連携したいスプレッドシートを開き、「拡張機能」メニューから「Apps Script」を選択します。プロジェクト名を「Search Console Connector」などに変更します。コードエディタが開いたら、メニューから「ライブラリ」を選び、ライブラリID「1B7FSrk5Zi6L1rSXXTD6DEoG1s0gD7k8Y」を追加してOAuth2ライブラリを組み込みます。
  3. スコープと認証を設定します
    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とシークレットに置き換えます。
  4. データ取得関数を作成します
    以下の関数を追加します。この関数は、指定したサイト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; }
  5. スプレッドシートにデータを書き込む関数を作成します
    以下の関数は、取得したデータをアクティブシートに書き込みます。例えば、シート名「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);
    }
    }
  6. トリガーを設定して自動更新します
    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

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。