パソコン用ヘッダー画像
Googleサービス PR

【GAS】スプレッドシートでサジェストキーワード検索

スプレッドシートでつくるずらしキーワード検索ツール
記事内に商品プロモーションを含む場合があります

SEO対策において、キーワード選定は非常に重要です。私もブログ運営において苦戦しているところであります!

無料で使える便利なツールとして「ラッコキーワード」が人気ですが、無料プランでは1日の利用回数に制限があります。

もっと手軽にキーワード調査をしたいと感じている方もいるのではないでしょうか?

ラッコキーワードの機能をGASで実装

GASをつかって、サジェストキーワード検索
キーワード『ラッコキーワード』でスクリプト実行

今回は、Google Apps Script(GAS)で自作した無料のサジェストキーワードリサーチツールを紹介します。

ラッコキーワードの無料版と同じような機能を持ちながら、利用回数無制限でサジェストキーワードを収集できる優れものです。

GASと聞くと難しそうに感じるかもしれませんが、ご安心ください。簡単な操作で、誰でも手軽に利用できます。

Googleのサジェスト機能(※Google検索エンジンのサジェストワード)

サジェストキーワードを自動で抽出&整理

Googleのサジェスト機能を活用し、指定したキーワードに関連するサジェストキーワードを自動で収集します。ラッコキーワードのように、関連性の高いキーワードを一覧で表示し、SEO対策に役立つ情報を整理できます。

強力な50音・A-Zの組み合わせ機能

キーワードに50音を組み合わせることで、ユーザーの検索意図に合致する「ずらしキーワード」を生成します。例えば、「東京観光」というキーワードに対して、「東京観光 穴場」や「東京観光 格安」といったキーワードを提案します。

この機能は、ラッコキーワードにも搭載されていましたが、GASツールではさらに多くの組み合わせを網羅的に調査できます。SEOで上位表示を狙うためには、競合が少ないニッチなキーワードを見つけることが重要です。

このツールを使えば、ラッコキーワードよりもさらに深くキーワードを掘り下げ、SEO戦略を強化できます。

サジェストキーワードツール導入方法

サジェストキーワードツールの作成手順

GASの知識がなくても、これらの手順に従えば簡単にツールを導入できます。紹介するスクリプトをコピーしてもらいスクリプトの実行をしてもらうだけです。

実行すれば、ラッコキーワードのような検索ツールを利用回数を気にせず、利用できます。

導入スクリプト

使用するのはこちらのスクリプトです。

const BASE_URL = "http://www.google.com/complete/search?hl=en&output=toolbar&q=";

function onEdit(e) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const cell = sheet.getActiveCell();

  if (
    (cell.getColumn() == 1 && cell.getRow() == 2) ||
    (cell.getColumn() == 2 && cell.getRow() == 18)
  ) {
    fetchKeywordSuggestions();
  }
}

function fetchKeywordSuggestions() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("サジェスト簡易検索");
  const keyword = sheet.getRange(2, 1).getValue();

  const keywordCounter = {};
  let suggestionList = [];

  // 最初のキーワードのサジェストを取得
  suggestionList.push(fetchSuggestions(keyword));

  // サジェストから更にサジェストを取得
  for (const suggestion of suggestionList[0]) {
    suggestionList.push(fetchSuggestions(suggestion));
  }

  // 出力
  sheet.getRange(5, 1, 10, 11).clearContent();
  let outputColumn = 0;
  for (const suggestions of suggestionList) {
    if (suggestions.length > 0) {
      sheet
        .getRange(5, 1 + outputColumn, suggestions.length, 1)
        .setValues(transposeList(suggestions));
      outputColumn++;
    } else {
      outputColumn++;
    }
  }

  // カウント
  countKeywords(suggestionList, keywordCounter);

  // 50音かけ合わせ
  const hiraganas = sheet.getRange(19, 2, 1, 5).getValues()[0];
  suggestionList = [];
  for (const hiragana of hiraganas) {
    suggestionList.push(fetchSuggestions(keyword + " " + hiragana));
  }

  // カウント
  countKeywords(suggestionList, keywordCounter);

  // 50音掛け合わせの出力
  outputColumn = 0;
  sheet.getRange(21, 2, 10, 5).clearContent();
  for (const suggestions of suggestionList) {
    if (suggestions.length > 0) {
      sheet
        .getRange(21, 2 + outputColumn, suggestions.length, 1)
        .setValues(transposeList(suggestions));
      outputColumn++;
    } else {
      outputColumn++;
    }
  }
}

function fetchSuggestions(keyword) {
  const requestUrl = BASE_URL + keyword;
  const options = {
    contentType: "application/xml; charset=utf-8",
  };
  const xml = UrlFetchApp.fetch(requestUrl, options).getContentText("UTF-8");

  const suggestions = XmlService.parse(xml)
    .getRootElement()
    .getChildren("CompleteSuggestion");
  return suggestions.map((suggestion) =>
    suggestion.getChild("suggestion").getAttribute("data").getValue()
  );
}

function transposeList(list) {
  return list.map((item) => [item]);
}

function countKeywords(suggestionList, keywordCounter) {
  for (const suggestions of suggestionList) {
    for (const suggestion of suggestions) {
      suggestion.split(" ").forEach((kw) => {
        keywordCounter[kw] = (keywordCounter[kw] || 0) + 1;
      });
    }
  }
}

導入/利用までのステップ

  1. Googleスプレッドシートの準備
    Googleスプレッドシートを開き、「サジェスト簡易検索」という名前のシートを作成
  2. GASコードのコピー&ペースト
    コードをコピーし、スプレッドシートの「拡張機能」→「Apps Script」からスクリプトエディタを開き、貼り付け
  3. キーワード入力
    「サジェスト簡易検索」シートの指定されたセル(A2)に、調べたいキーワードを入力
  4. スクリプト実行
    スクリプトエディタの「実行」ボタンをクリックすると、関連キーワードやずらしキーワードが自動でシートに出力

トリガー設定でさらに便利に

GASについて、ご存じの方はトリガー設定をおこなえば、キーワード入力の編集をキーにスクリプトの実行をさせることが可能です。

GASツールでSEO対策

ラッコキーワードは便利なツールですが、無料版では利用回数に制限があります。自分で設定するのは面倒だなぁ、という方はこちらからコピーしてお使いください。

GASで自作した無料のサジェストキーワードリサーチツールを使えば、その制限を気にせず、好きなだけキーワード調査を行うことができます。

キーワード選定に悩んでいる方は、ぜひこのツールを活用して、SEOの成功を目指しましょう!


Fatal error: Uncaught JSMin_UnterminatedRegExpException: JSMin: Unterminated RegExp at byte 47225: /.source + in /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php:264 Stack trace: #0 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(150): JSMin->action(1) #1 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(84): JSMin->min() #2 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/autoptimizeSpeedupper.php(38): JSMin::minify('/* PrismJS 1.29...') #3 /home/c1448553/public_html/one-walker.net/wp-includes/class-wp-hook.php(324): autoptimizeSpeedupper->js_snippetcacher('/* PrismJS 1.29...', '/home/c1448553/...') #4 /home/c1448553/public_html/one-walker.net/wp-includes/plugin.php(205): WP_Hook->apply_filters('/* PrismJS 1.29...', Array) #5 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/autoptimizeScripts.ph in /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php on line 264