*

Google Apps Scriptで検索サジェストを取得する

公開日: : 最終更新日:2018/02/14 google , , , ,


LINE facebook twitter g+
B! pocket Evernote 楽天


家電&カメラ タイムセール/バーゲン会場/クーポン配布はこちら。
Amazonでクーポンをもらう

【Amazonファッション】メンズ80%オフ商品を見る!
セール商品を見る

サジェスト取得
Googleなど検索サジェストからキーワードのヒントを得ることは多いですよね。そのサジェストをGoogle Apps Script(GAS)でも取得できます。

こんにちは、Google Apps Script大好きカグア!です。よくGASでツールを自作しています。

本記事では、GoogleやYouTubeなどから検索サジェストのキーワードを、Google Apps Scriptで取得する、2018年1月16日時点での方法とコードをご紹介します。なお、サジェストAPIの利用については各ドキュメントをお読み下さい。

関連記事
>>Google Apps Script でできることを5つのメソッドと関数から考えた
>>URL一覧からタイトルを一括DLするGoogle Apps Script
>>Google Apps Script とAPIを使った自動メール配信システム作成

Googleサジェストを調べる方法

Google Apps Scriptでは、標準でhttp通信をする関数を持っています。以下のGIFアニメのように、セルにその関数を記述するだけで自動的に検索キーワードを拾ってきてくれます。
グーグルサジェスト

IMPORTXML()関数

IMPORTXML()は、スプレッドシートからXMLを取得する関数です。公式のヘルプには、WikipediaからAタグのリンクをひっぱってくるコードが紹介されています。

IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href")

Googleサジェストの仕組み

Googleサジェストは、検索窓への入力を検知して、以下のURLがapiにコールされることでXMLが発行されます。

http://www.google.com/complete/search?hl=ja&output=toolbar&q=キーワード

実際のコード

ですから、以下のようにスプレッドシートのセルに IMPORTXML()関数を記述しますと、Googleサジェストの一覧が取得できます。IMPORTXML()関数は結構お利口で取得したXMLからリストを抽出し、自動でそのセル以下に列挙してくれるのです。

=IMPORTXML("http://www.google.com/complete/search?hl=ja&output=toolbar&q="&D1,"//suggestion/@data")

グーグルサジェスト関数

では次にグーグル以外でサジェストを取得できる、YouTubeの検索キーワードを取得してみましょう。

YouTubeサジェストを調べる方法

検索キーワードを調べる事例

Google以外の検索サイトから検索キーワードのサジェストを取得するには、ちょっとGoogle Apps Scriptを書かなくてはなりません。私はメニュー化して操作の簡略化を図っています。
ユーチューブサジェスト

YouTubeサジェストを取得する仕組み

  • ワークシートをアクティブにする
  • 検索キーワードのセルから値を取得
  • UrlFetchApp.fetch でURLをコール
  • getContentText()でテキスト化
  • JSON.parse()でパースして配列から値を取得

YouTubeでも前述のGoogleのように、検索キーワードのサジェスト一覧を返してくれるURLが存在します。

http://clients1.google.com/complete/search?hl=ja&ds=yt&q=キーワード

以下のスクリプトでは、いちおう念のためブラウザにFirefoxを指定してはいます。

実際のコード

以下のコードは上記のアルゴリズムを実践し、取得ルーチンとメニュー生成ルーチンとで構成されています。セル番地や細かな実装は各自でカスタマイズして下さい。

//YouTubeサジェスト取得メイン  
function youtube(){
  var ss = SpreadsheetApp.getActive().getSheetByName('aaa');
  var kw = ss.getRange("D1").getValue();
  var url = "http://clients1.google.com/complete/search?hl=ja&ds=yt&client=firefox&q="+kw;
  var res = UrlFetchApp.fetch(url).getContentText();
  var jsonData = JSON.parse(res)[1];
  var y = jsonData;
  var j=2;
  for(var i in y ){
   ss.getRange(j, 8).setValue(y[i]);
   j++;
  }
}
//メニュー表示
function onOpen(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menus = [{name: 'YouTubeサジェスト', functionName: 'youtube'}
              ];
  ss.addMenu('便利', menus);
 
}

コードが動かない場合

上記のコードが、うまく設置できないという方は、UrlFetchApp.fetch、getContentText、JSON.parse あたりのキーワードでGoogle検索して頂きますと、多くのGoogle Apps Scriptコード解説サイトが見つかると思います。

他には、コールするURLを含めて検索しても良いかもしれません。同様に、サジェストをフェッチしたい記事が見つかるかと思います。いきなり、Qiitaでサイト内検索してもいいかもしれません。

サジェストを取得する方法を調べる

XPathの取得方法

こちらに詳しく書いてありますが、IMPORTXMLでは、取得するURLとXPathという、ページ内のどの部分から値を持ってくるという場所(XPath)を指定する必要があります。
>>SpreadSheetでスクレイピング。Importxml他、便利な関数9+1 – Qiita

ただこれが結構難しくて、私は結構ハマりました。これかなこうかなといろいろと記述してみて値を得る、ということを繰り返して調べます。

Chromeで、Windowsですと[F12](Macは[Command]+[Option]+[I])でデベロッパーツールを出し、コード画面のほうで取得した値で右クリックして、Copy>XPath で取得するのですが、そのXPath通りにいかないことのほうが多いので苦労します。
XPATHをコピーする

後述の関連リンクなどいろいろと文献を調べてみて下さい。

サジェストURLの取得方法

YouTubeなど検索サジェストのキーワードを表示してくれるサイトの多くは、検索窓に何かしらのキーワードを入力しますと、その都度、サジェスト取得用のURLを投げています。それはデベロッパーツールの「Networkタブ」から確認できます。
サジェストのURL

ここでコールされているURLを見れば、サジェストを取得しているURLがわかりますので、あとは必要なパラメーターなどを試行錯誤すればOKです。くれぐれもサジェストAPIの利用範囲内で使いましょう。

その他 8サイト取得URL

前述の方法で調べました大手サイトで投げているサジェストURLです。ご利用にあたっては、必ず各ドキュメントをご一読下さい。

Instagram

https://www.instagram.com/web/search/topsearch/?query=

Yahoo!Japan

https://assist-search.yahooapis.jp/SuggestSearchService/V5/webassistSearch?query=

教えてgoo

https://search.goo.ne.jp/sgt.jsp?MT=

楽天市場

http://api.suggest.search.rakuten.co.jp/suggest?cl=dir&rid=0&sid=0&oe=utf-8&cb=cb&q=

GooglePlay

https://market.android.com/suggest/SuggRequest?json=1&c=0&query=

Twitter

https://twitter.com/i/search/typeahead.json?count=10&filters=true&q=

Amazon

http://completion.amazon.co.jp/search/complete?method=completion&search-alias=aps&mkt=6&q=

niconico

http://sug.search.nicovideo.jp/suggestion/expand/

※実際にはさらにパラメーターが必要なところもあります。

サジェストAPIのURLコールは回数制限がある、もしくは非公開(利用を認めていない)のはずなので、サジェストAPIの利用前には必ず開発者向けドキュメントをお読み頂き、自己責任にてご利用下さい。なお、2018年1月16日時点での情報ですので、古くなっている可能性もありますので、やはりドキュメントを読まれることをおすすめします。

GASで情報取得の効率化を目指す

今回は検索キーワードのサジェスト取得の方法をご紹介しましたが、Google Apps Script によるWebページアクセスの便利さについてご理解いただけたかと思います。

Google Apps Scriptでちょっとした情報収集を効率化し、社内で定期的にSlackなどに送信し共有する。情報収集を効率化したり共有したりするツールとして、Google Apps Script は本当に便利です。皆さんも独自の視点で、なにかツールを作ってみてはいかがでしょうか。

Googleスプレッドシートを共有すれば社内でのスクリプトの共有も簡単に行なえます。今回のいろいろと試したサジェスト取得ですが、私もその可能性を強く実感しました。

Google Apps Scriptに慣れていない方は、いろいろな記事を見て、「そのコード内の命令+したいこと」などで検索するといろいろと見つかると思います。基本のお作法(記述)を学びますと応用はきくはずですので、ぜひ挑戦してみてはいかがでしょうか。

学習には動画でGoogle Apps Scriptを無料で学べるドットインストールがおすすめです。
>>Google Apps Script入門 (全16回) – プログラミングならドットインストール

Google Apps Script はほんと楽しいですよね。お疲れ様です。

詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~ | 高橋宣成

詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~ | 高橋宣成 |本 | 通販 | Amazon
Amazonで詳しく見る

書籍は2017年12月のこちらが新しいという点でもおすすめ。

>>人気の「Google Apps Script 関連本」最新一覧はこちら。
Amazonで詳しく見る

関連情報リンク

Google Apps Scriptはすでに多くの企業内システムとして、業務効率化に使われています。
>>Google Apps 活用事例 – Google の場合- – YouTube

XMLを取得できますので、いろいろなデータ取得に便利です。
>>SpreadSheetでスクレイピング。Importxml他、便利な関数9+1 – Qiita

ヤフーファイナンスから値を持ってくることを試みています。
>>Google Docs スプレッドシートのimportXMLの使い方 – Seamonkey-Director

リクルートもAPIを公開しているのですね。
>>リクルートのAIを無料で使えるA3RTをGASから触ってみる – Androidのメモとか

URLをFETCHできるとほんと便利。
>>GASからContactsApiを使用して読みがなをつける – Qiita

Google Apps Script(GAS)は定期実行させられるのも魅力。
>>Slack botをGASでつくる方法で一番楽そうなやつ – Stimulator

ただしGASは結構制限もあるので注意。
>>Google Apps Scriptを使ってハマった5つのこと【GAS】 | ゆたんぷろぐ
>>【容量制限】これは困った。GAS(Google Apps Script)の落とし穴

フレーズからいろいろな検索意図が読み取れます。検索汚染という問題もありますが。
>>グーグルの検索結果から見えてくる「ユーザーの検索意図」の読み取り方 | Moz – SEOとインバウンドマーケティングの実践情報 | Web担当者Forum

使い方には気をつけて。
>>悪用厳禁!プログラミング不要のWEBスクレイピングツール 比較19選 | Eプロ

取得した値をメール送信とも簡単に連携できます。
>>業務を効率化する Google Apps Script 講座★スプレッドシートから自動でメールを送ってみよう | 株式会社リッチメディア

Google Apps Scriptが使えるランサーさんを見つけて、スクリプトを外注するなど。
>>ランサーへ依頼/外注 – 料金比較・実績一覧 | クラウドソーシング「ランサーズ」

Google Apps Scriptを使って実際に業務効率化をされているという求人。
>>Google apps scriptを用いたツール化業務|IT/Web業界の案件・求人 #359865【A-STAR】

まとめ

Google Apps Script を使いますと、多くのウェブサイトにアクセスし値を取得することができます。くれぐれも悪用しないようにしたいものです。

いっぽうURLを叩くことで便利につかえる公開APIはたくさんありますので、Google Apps Script による定期実行(cron)などと組み合わせて、仕事の効率化に役立てたいものですね。

Google Apps Script は本当に便利ですね。

「サジェスト」

関連するほかの記事を見てみよう!
このサイトのトップページへ行く

  • このエントリーをはてなブックマークに追加
  • Pocket

Profile



Yoshihiko Yoshida
ブロガーときどきマーケターです。業界23年目。Googleアナリティクス公式コミュニティ・アンサリスト最高ランク「レジェンド」国内初獲得。アクセス解析を中心としたコンサルティングや設定、メディア運営に従事。「マツコの知らない世界」Googleマップ案内人として出演。Googleストリートビュー認定フォトグラファー。教育システム情報学会会員。元立教大学非常勤講師。主な著書「Googleアナリティクス基礎講座」(技術評論社)。趣味はデジカメとパン作り。>>もっと読む

Instagram

◆代表者略歴 ◆受賞歴
◆おもな著書 ◆TV出演歴
◆新聞掲載歴 ◆雑誌/連載歴
 <<お問い合わせはこちら>>

Facebook

このブログをRSS購読しよう!(無料)

follow us in feedly

よろしければ「いいね」して下さい!

 
PAGE TOP ↑