ImportXMLでサジェスト取得する構文を作ろう
では何となく「Xpathの内容」が理解出来たところで、早速「サジェストキーワードを取得する構文」を作っていきましょう!
今回はスプレッドシートの
- A1セルにメインキーワードを入力
- A3セル以降にサジェストを反映
という形を作っていきます。
冒頭でご紹介したコチラですね↓
ImportXML関数でサジェストキーワードを取得するには、構文内にサジェストを拾ってくるURLを指定しなければなりません。
ImportXMLの構文は
=IMPORTXML(URL, XPath クエリ)
なので
=importXML("https://www.google.com"&A1...
と入力したいところ。
だがしかし、これだと単純にGoogle検索窓の指定なので(当たり前ですが)エラーになってしまいます(^q^)
サジェストを取得するImportXMLの書き方
正解はコチラ↓
=ImportXML("http://www.google.com/complete/search?hl=en&output=toolbar&q="&A1,"//suggestion/@data")
もちろんImportXMLの記述については、しっかり参考にさせていただきました↓
importXML関数の第1関数であるURLに『Google suggest API』を指定することで、「サジェストキーワード」を取得出来るようになります。
ImportXML関数の引数指定のコツ
以下赤字がimportxmlの第1関数で、指定したURLです。
=ImportXML("http://www.google.com/complete/search?hl=en&output=toolbar&q="&A1,
また第2関数となる「Xpath指定」は「Googleで検索されたサジェストキーワード」を取得したいので、
//suggestion/@data
となります。
このXpathは「"suggestion"要素に従属する"date"を選択する」という意味。
よく分からないので、分解してみます。
//suggestion...Google suggest API で取得した要素ノード suggest を全て選択する。
/@date...コンテキストノードsuggest の date属性 を選択する。
Windowsで言うと、フォルダの場所を指定するニュアンスに似てる気がします。
" / "が、「その要素の中の〜」という感じ。
というわけでサジェストキーワードの「Xpathの理解」はコチラを参考にさせていただきました↓
それぞれの構文とその意味
構文 意味 para コンテキストノードの子要素 para を選択する * コンテキストノードのすべての子要素を選択する text() コンテキストノードのすべての子テキストノードを選択する @name コンテキストノードの name 属性を選択する @* コンテキストノードのすべての属性を選択する para[1] コンテキストノードの 1番目の子要素 para を選択する para[last()] コンテキストノードの最後の子要素 para を選択する //para ルートノードの子孫ノードから要素ノード para をすべて選択する。つまり、コンテキストノードと同じ文書内のすべての para 要素を選択する .(ピリオド) コンテキストノードを選択する ..(ダブルピリオド) コンテキストノードの親を選択する chapter[title="Introduction"] コンテキストノードの子要素 chapter のうち、文字列値が Introduction である子要素 title を 1個以上持つものを選択する chapter[title] コンテキストノードの子要素 chapter のうち、子要素 title を 1個以上持つものを選択する employee[@secretary and @assistant] secretary 属性と assistant 属性の両方をもつコンテキストノードの子要素 employeeをすべて選択する
これらを組み合わせると...
=ImportXML("http://www.google.com/complete/search?hl=en&output=toolbar&q="&A1,"//suggestion/@data")
となり、サジェストキーワードをスプレッドシート上で取得出来るようになります\(^o^)/
ImportXMLを使った応用
サジェストキーワードを取得する以外でも
- 記事のアイキャッチ画像
- タイトル
- URL
といったデータも、スプレッドシート上にまとめることが出来ます。
Importと名付けられただけあって、オンラインでデータ取得してくるのでスプレッドシート上から最新情報の取得が可能です。
例えばベンチマークしているサイトの※情報を、スプレッドシートにまとめておくことも出来ちゃいます。
Chromeの「検証」という機能をつかって”ブラウザに表示されているサイトのソース”を見ながら行います。
とはいっても僕の理解ではまだまだですが...この辺りはXpathの記事と一緒に紹介出来たらなとがががんばります(泣)
scriptスプレッドシート行・列固定をワンクリックで!コピペでカンタンに再現出来るよ!
まとめ. ImportXML関数なら簡単にデータ収集ができるぞ
ImportXML関数は日頃から
- HTML
- RSS
- XML
などを触っている方であれば難なく理解出来ると思いますが、普段Excelしか使ってないよwっていう方(あたす)にとってはかなりハードル高めな関数。
ですが理解出来ればこれ以上ないお役立ち関数になること必須!
関連記事: Xpathの使い方が分からない!けどChromeの検証使ってみたら・・ 複数あるシートやデータの中から「ほしいデータ」だけが抽出出来たら一覧表の作成なんかが捗りますよね。 QUERY関数の実行 ...
関連記事: 【スゴイ】スプレッドシートimportrange関数の使い方!他シートのデータを取り込めるゾ!
関連記事: スプレッドシートquery関数の使い方!vlookupより断然オススメ!
スプレッドシートquery関数の使い方!vlookupより断然オススメ!