Googleなど検索サジェストからキーワードのヒントを得ることは多いですよね。そのサジェストをGoogle Apps Script(GAS)でも取得できます。
この記事の目次
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通りにいかないことのほうが多いので苦労します。
後述の関連リンクなどいろいろと文献を調べてみて下さい。
サジェストURLの取得方法
YouTubeなど検索サジェストのキーワードを表示してくれるサイトの多くは、検索窓に何かしらのキーワードを入力しますと、その都度、サジェスト取得用のURLを投げています。それはデベロッパーツールの「Networkタブ」から確認できます。
ここでコールされているURLを見れば、サジェストを取得しているURLがわかりますので、あとは必要なパラメーターなどを試行錯誤すればOKです。くれぐれもサジェストAPIの利用範囲内で使いましょう。
その他 8サイト取得URL
前述の方法で調べました大手サイトで投げているサジェストURLです。ご利用にあたっては、必ず各ドキュメントをご一読下さい。
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=
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 はほんと楽しいですよね。お疲れ様です。
Google Apps Script目的別リファレンス 実践サンプルコード付き 第2版 | 清水 亮, 枡田 健吾, 近江 幸吉, 佐藤 香奈, 一政 汐里
>>人気の「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 は本当に便利ですね。
・ ・ ・ ・ ・
>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る
↓↓↓無料のニュースレターを配信中です