かずきち。の日記

サーバサイドエンジニアのつぶやき

こんなに簡単なの?IMPORTXMLだけでスプレッドシートにGoogleサジェストを抜いていく

Googleサジェストとは?

Googleサジェストは「もしかして検索」とも呼ばれます。
検索語に対して、Googleが「もしかしてこれじゃない?」と言葉を提案してくれます。
検索ボリュームが多いもの、すなわち人々の興味関心が如実に現れます。
今回はそんなサジェストを一気に抜いていくことを目的とします。

そのためにはまずはGoogle検索のクエリの仕様について理解しなければいけません。

developers.google.com

みなさんなんとなく、検索をしているかと思いますが、どうしてそのページがその単語でその順位なのか?ということはみなさんが検索ボックスに文字を打ち込むことで収集されています。
そしてGoogle検索のウェブクローラーによって、インデックスされます。

インデックスされるとはどのようなことなのか?

検索エンジンで検索をすると、Googleは「これですね」とすぐに結果を表示してくれます。
これはクローラーによって事前にどの言葉に対してなんのページを表示しようかあらかじめGoogleが計算をしているからです。

なんかインデックスとか意味わからないこと言ってるなと思う方のためにもう少し噛み砕いて説明すると…

Googleは掲載順位が毎回変わる辞書です。
Gooogleはどんな言葉が検索されるかを予想して予め検索結果ページを裏で用意しています。
世界中のページを0コンマで、こんなページがありますよと結果を出せるのは予めページ掲載順位を計算しているからです。

広辞苑で「こんにちは」と調べれば…

sakura-paris.org

このように返ってきます。
これは辞書の編集者が「こんにちは」という言葉は辞書に掲載しておこうと予め決めているので、広辞苑で「こんにちは」と調べれば出てきます。
何の言葉を辞書に載せるかは各出版社の編集者が決めているわけです。
編集者が「この言葉は最近はよく使われるから」「もう時代遅れだから次の版では載せないようにしよう」と決めています。

Googleはそんな言葉に対して非常に敏感

もともと検索エンジンを作っていますからね…Googleは広告会社でありながら、検索エンジンを作っています。

<toplevel>
<CompleteSuggestion>
<suggestion data="コロナ"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ感染者数"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ感染者数 東京"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナワクチン"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ症状"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ 東京"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ2019"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ後遺症"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="コロナ検査キット"/>
</CompleteSuggestion>
</toplevel>

例えばコロナウイルスで検索をかけると感染者・ワクチン・後遺症などの言葉が一緒に検索されていることがわかります。

xml形式でサジェストを出している

よくこのコードを見ると非常によく整形されているxml形式ということに気が付きます。
smlとは

Extensible Markup Language (XML) は、任意のデータを定義するルールを提供するマークアップ言語です。 他のプログラミング言語とは異なり、XML は単独では計算オペレーションを実行できません。 代わりに、構造化データ管理のために、任意のプログラミング言語またはソフトウェアを実装できます。

あとはGoogleスプレッドシート上でこのxmlをIMPORTXMLしていきましょう。

=TRANSPOSE(IMPORTXML("http://www.google.com/complete/search?hl=en&output=toolbar&q="&"コロナ"& "//suggestion/@data"))

たった一行でMPORTXML関数だけでコロナに関連する単語が取得することができました。

マーケティングやブログの記事探しに使える

最初はコードを書いていたんですが、調べているうちにこれってコード書く必要なくない?ということに気がついて…

みなさんもこの関数をスプレッドシートに打ち込めば、簡単にサジェストワードを取得することができますよ。