概要
スプレッドシートで簡単にスクレイピングができるIMPORTXML
関数を使う際に、取得したデータの文字コードがShift_JISの場合文字化けが起きてしまいます。その問題をGoogle Apps Script(GAS)を利用してSHIFTJIS2UNICODE
という独自関数を登録することにより解決しました。
手順
こちらのコードをGASにコピペして、スプレッドシートのセルからSHIFTJIS2UNICODE
関数を呼び、=SHIFTJIS2UNICODE(IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href"))
のように活用します。
詳細な手順
- スプレッドシートのメニューから「ツール」→「スクリプトエディタ」の順に進み、スクリプトエディタを開きます。
- SHIFTJIS2UNICODE.gsをコピーして、スクリプトエディタにペーストして全てを書き換えます。
- 登録が終われば、スプレッドシートのエディタから関数として
SHIFTJIS2UNICODE
関数を呼び、=SHIFTJIS2UNICODE(IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href"))
のように読み込みます。
注意点
- 文字コードの関係のせいか小さいカタカナの「ュ」が「?」として表示されてしまうことを確認しています。これを修正するために次のように
SUBSTITUTE
関数を利用するという方法が挙げられます。
=SUBSTITUTE(SHIFTJIS2UNICODE(IMPORTXML("https://en.wikipedia.org/wiki/Moon_landing", "//a/@href")),"?","ュ")
しかし元々「?」の場合も置換してしまうため注意が必要です。 - その他にも表示が正確でない事例も存在するかもしれないので、ご注意ください。
- 今回のコードはencoding.jsをGASで利用しています。またそのソースを直接貼り付けているためコードが長くなっています。