サジェストキーワードの取得(GAS)

機能説明

指定したキーワードのサジェストキーワードを取得するツールです。

メモ
「サジェストキーワード」とは、検索エンジンがユーザーに対して提案するキーワードのことです。

コード全体

下記コードに貼り付け、実際の動作を確認してください。

◆コード

function getSuggestion() {

  let baseUrl = "https://suggestqueries.google.com/complete/search?client=firefox&q=";
  let url = baseUrl + encodeURIComponent("ipad");
  
  let response = UrlFetchApp.fetch(url); 
  let content = response.getContentText()
  let suggestionsArray = JSON.parse(content);
  
  // サジェストキーワードの部分だけを返す
  let suggestions =  suggestionsArray[1];

  // ログにサジェストキーワードを出力
  for (let i = 0; i < suggestions.length; i++) {
    console.log(suggestions[i]);
  }
}

◆出力結果
※具体的な内容は実行する時期などによって異なります。

機能の説明

1.

let baseUrl = "http://suggestqueries.google.com/complete/search?client=firefox&q=";

Googleサジェストを取得するためのベースとなるURLをbaseUrlという変数に格納しています。URLを使用して、キーワードの提案を取得することができます。

2.

let url = baseUrl + encodeURIComponent("ipad");

ここでは、”ipad”という文字列をURLエンコードした上で、baseUrlの末尾に追加して、完全なURLをurl変数に格納しています。

encodeURIComponent関数は、指定した文字列のすべての文字をURLエンコードするために使用されます。

URLエンコードとは、URLに含めることができない特定の文字(たとえば、スペースやアンパーサンド(&)、等号(=)など)を、URLに安全に含めることができる形式に変換するプロセスのことを指します。

つまりURLエンコードすることによって、指定した文字をURLの一部として使用できるようになります。

3.

let response = UrlFetchApp.fetch(url); 

UrlFetchApp.fetch関数を使用して、上で作成したURLへのリクエストを送り、そのレスポンス、つまり指定したWebページの情報をresponse変数に格納しています。

UrlFetchApp.fetch関数はGASで提供されている関数で、これを使用すると、指定されたURLのWebページの内容を簡単に取得することができます。

4.

let content = response.getContentText()

getContentText()は取得したWebページの情報からボディ部分をテキストで抽出する関数です。

実行時には、contentに以下のような内容が収納されています。

 ■console.log(content)の結果

5.

let suggestionsArray = JSON.parse(content);

JSON.parse関数を使用してJSONオブジェクトに変換し、suggestionsArray変数に格納しています。

JSONオブジェクト

実行時には、suggestionsArrayに以下のような内容が収納されています。

 ■console.log(suggestionsArray)の結果

6.

let suggestions =  suggestionsArray[1];

console.log(suggestionsArray)の出力結果からもわかるように、suggestionsArrayの2番目の要素(インデックス1)にサジェストキーワードが格納されているので、この内容をsuggestionsに代入します。

もし構造がわかりにくいときはConsole.logを使って、それぞれの配列に何が入っているか確認するとわかりやすいでしょう。

こちらの結果からも今回欲しい情報はsuggestionsArray[1]であるということがわかります。

7.

for (let i = 0; i < suggestions.length; i++) {
  console.log(suggestions[i]);
}

forループを使用して、サジェストキーワードの配列を一つずつ取得し、console.log関数を使用してGoogle Apps Scriptのログに出力しています。

以上、ちょっと難しかったと思いますが、一度にすべてを理解する必要はありません。

ここで重要なのは、このプログラムの機能を考えることです。

つまり「キーワードを与えると、そのサジェストキーワードを表示するプログラム」であるということだけは理解しておいてください。

そうすることによって、次のようなカスタマイズも可能になってきます。

カスタマイズ

次のようなカスタマイズを行ってみてください。

1.

「ipad」のサジェストキーワードを取得していますが、これを「iphone」のサジェストキーワードを取得するプログラムに変更してください。

2.
スプレッドシートのセルの「A1」に記載されているキーワードのサジェストキーワードを取得するプログラムに変更してください。

3.
3つのキーワードを一気に調査できるようにカスタマイズしてください。

例えば、セルの「A1」、「A2」、「A3」に次のように3つのキーワードを1回の実行で調査できるようにします。

・iPad
・副業
・アフィリエイト

ヒント1を見る
繰り返し処理にはfor文を使用します。
ヒント2を見る
3つのキーワードを格納する配列変数を用意してください。

4.
3つのキーワードを調査する際に、キーワードごとに2秒から4秒の間隔をランダムで空けるよう変更してください。

ヒント1を見る
以下を参照にしてください。
ランダム関数について(GAS)
ヒント2を見る
2秒から4秒についてはミリ秒として考えます。
2000ミリ秒から4000ミリ秒をランダムで表すと以下になります。

let randomTime = Math.floor(Math.random() * (4000 - 2000 + 1)) + 2000;

5.
自由にカスタマイズしてみてください。
「このようにカスタマイズしてみたい」という要望があって、やり方がわからない場合はチャットワークで質問してください。

タイトルとURLをコピーしました