Googleスプレッドシートのimportxml関数でWikipedia API(単語の各言語表記を取得)

 Googleスプレッドシートには他の表計算ソフトには無い独自の関数が多くある。

特に以前取り上げたtranslate(翻訳)関数や通貨レートをとってくるGoogleFinance関数(※)など、さすがインターネットと共に成長したGoogleと思わせるインターネットを利用した関数が特徴的である。

※=A5*GoogleFinance("currency:JPYVND", "average")
 このようにすると日本円をベトナムドンに換算して表示してくれる。VNDJPYにすればベトナムドンを日本円に換算する。USDを指定すれば米ドルとなる。

その中で汎用的に様々な目的に使えて便利だが、ちょっと癖のあるimportxmlについて、自分の備忘録的に記しておくことにする。

importxmlはその名の通りxmlをインポートする事が目的となっているが、htmlでもxpathを指定する事で指定した要素を取得してセルに挿入できる。

例えばxml形式で返ってくるAPIを利用してスプレッドシートにデータを挿入するというのは一般的な活用方法だと思われる

XMLの取得

まずは、htmlではなく、APIからxmlを取得する例を記しておく。

私が3年前に作成したが、既に自分は存在を忘れかけていた、WikipediaAPIを使って特定の単語の各言語表記を自動取得するスプレッドシートを見てもらいたい。

Wikipediaから多言語取得

利用方法

このスプレッドシートはA2セルになんらかの単語を入れると、その単語の各言語表記をWikipediaの記事タイトルから取得する仕組みとなっている。

シートはロックされているがA2セルはロックから除外しているので自由に単語を入れて使ってもらいたい。

コピーして使ってもらっても構わない。Googleスプレッドシートは誰でも無料で使えるので気軽に試してほしい。

実に単純な仕組みだがそこそこ便利だと思う。

ドラえもんと入力した画面
A2にドラえもんと入力するとA3以降に各言語の表記が自動表示される
利用方法としてはA2に単語を入れるのみであるが、入れた単語がWikipedia日本語版の記事タイトルと完全一致しないと各言語表記は表示されない。
例えば「ドラえもん」は問題ないが「ヤマト」だと各言語表記は表示されない。
こうした場合に正しい記事タイトルがすぐにわかるようにD列に入力単語を含む記事タイトルを自動表示するようにしている。
すると「ヤマト」「ヤマト運輸」「宇宙戦艦ヤマト」と表示されているので、知りたい記事タイトルは「宇宙戦艦ヤマト」だとわかる。
これをコピーするなり入力するなりすると、「宇宙戦艦ヤマト」の各言語表記を確認することができる。
ドイツ語では「Uchū Senkan Yamato」イタリア語では「La corazzata Yamato」だとわかる。

関数の説明

=IMPORTXML("https://ja.wikipedia.org/w/api.php?format=xml&action=query&prop=langlinks&lllimit=100&titles="&A2,"/api/query/pages/page/langlinks/*")

A3セルにこのように記載している。A2に入っている単語をキーとしてWikipediaAPIを叩いている事がわかる。
右側のxpath表記は返ってくるxmlに対してlanglinksを取得するという指定である。
どのようなxmlが返ってきているのかを確認したい場合はURLを直接ブラウザに貼り付けてみると良い。

https://ja.wikipedia.org/w/api.php?format=xml&action=query&prop=langlinks&lllimit=100&titles=%E3%83%89%E3%83%A9%E3%81%88%E3%82%82%E3%82%93

D列の単語を含む記事タイトルもやっていることはほとんど同じ。

=IMPORTXML("https://ja.wikipedia.org/w/api.php?format=xml&action=query&srlimit=99&list=search&srsearch="&A2,"//p/@title")

記事タイトルを取得するためにxpathで@titleを指定している。

余談

これは随分前に翻訳関数を記事として書いた時に作ったスプレッドシートで、様々な言葉を各言語表記で確認して辞書を構築し翻訳精度を高めることを目的としていた。
作った直後は面白くて結構使っていたが、その後の運用は人任せにしていたので自分で使うことは殆どなかった。
でも、久しぶりに使ってみると結構面白いなぁと思う。
「名探偵コナン」と入力すると英語は「Case Closed」だったり、ベトナム語は「Thám tử lừng danh Conan」だったりする。
ほんの僅かな労力でこんな面白い事が出来るなんてGoogleスプレッドシートは便利だなと思う。
あ、importxmlが癖の強い関数である事とか、htmlでの利用方法とか、書くべきことはたくさんあったのだけど、単純な内容を無駄に長い文章で説明したために記事が長くなってしまった。
なので次回、別の記事としてhtml取得編を記す事とする。

コメント

このブログの人気の投稿

Googleスプレッドシートの正規表現置換で改行文字

Googleスプレッドシートのimportxml関数をhtmlに使う

名作と定評のあるスーパーファミコンの『ザ・モノポリーゲーム2』を今更ながら遊んでみた